我有一个txt文件,我打开fopen阅读。然后我尝试使用转换Unicode(?)字符串
<xmp>... contents ... </xmp>
一个行的读取像呼应屏幕的行:
"aut\xf3k\xf6lcs\xf6nz\xe9s budapest kauci\xf3 n\xe9lk\xfcl"
谁能告诉我如何正确解码呢?
#!/usr/bin/php -q
<?php
$read_handle = fopen("somefile.txt", "r");
$write_handle = fopen("write.csv", "w");
if ($read_handle) {
while (($buffer = fgets($read_handle, 4096)) !== false) {
// Some modifications to the buffer here, converting it to CSV format
@fwrite($write_handle, $buffer."\n");
}
}
if (!feof($read_handle)) {
echo "Error: unexpected fgets() fail\n";
}
@fclose($read_handle);
@fclose($write_handle);
}
?>
该脚本在命令行上运行,当我“尾巴”结果CSV时,它显示上面的编码。当我将CSV导入到MySQL时,它显示出相同的结果。 Similair在OpenOffice中打开CSV时。
TXT文件是从谷歌的BigQuery一个出口,使用以下命令
bq -q --format=pretty query "SELECT QUERY HERE" > somefile.txt
你可能会想,为什么不直接让BigQuery的命令行工具输出一个CSV文件,但这是因为它触发了一些bug在系统中也有这个编码做...
即编码不是Unicode;它可能是8859-1或8859-2。 – geoffspear
在它们被转换为\ xXX之前,那些\ xXX字符是什么编码?我试过'$ s ='aut \ xf3k \ xf6lcs \ xf6nz \ xe9s'; echo preg_replace(“#(\\\\ x [0-9a-f] {2})#e”,“chr(hexdec('\\ 1'))”,$ s);'但似乎这个不是unicode ... – piotrekkr