0

我有一个 txt 文件,我用 fopen 打开它以供阅读。然后我尝试使用回显屏幕上的行

<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 时,它显示了相同的结果。在 OpenOffice 中打开 CSV 时类似。

txt 文件是从 Google BigQuery 导出的,使用以下命令

bq -q --format=pretty query "SELECT QUERY HERE" > somefile.txt

您可能会想,为什么不直接让 BigQuery 命令行工具输出一个 CSV 文件,但那是因为它会触发系统中的一些 bug,这些 bug 也与此编码有关......

4

2 回答 2

0

这听起来像是 BigQuery CLI 中的一个错误。默认情况下,字符串在输入时为 UTF-8,在输出时为 UTF-8。但是,在客户端中组合 Unicode 和非 Unicode 字符串似乎存在打印问题...

要仔细检查这是否是客户端问题,您可以传递标志“--apilog=”并检查查询的消息请求/响应。如果响应正确但客户端打印的结果错误,那么这肯定是客户端问题。

如果您有一些示例数据可以上传和查询以重现此问题,请在http://code.google.com/p/google-bigquery-tools/issues/list打开一个问题,以便我们确保修复你的具体问题。

谢谢!

于 2012-05-31T17:08:11.633 回答
0

请注意,使用 BigQuery 命令行工具,您可以从查询创建新表,然后将该查询导出为 CSV。

# Run Query:
bq query --destination_table=mydataset.baby_table "SELECT name,count FROM mydataset.babynames WHERE gender = 'M' ORDER BY count DESC LIMIT 6"

# Extract data to CSV:
bq extract mydataset.baby_table gs://mybucket/baby_table.csv
于 2012-06-14T01:30:02.283 回答