0

fopenで読むために開いたtxtファイルがあります。次に、を使用して画面上の行をエコーし​​ようとします

<xmp>... contents ... </xmp>

行の1つは次のようになります。

"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を開くときのSimilair。

txtファイルは、次のコマンドを使用したGoogleBigQueryからのエクスポートです。

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

BigQueryコマンドラインツールにCSVファイルを直接出力させないのはなぜかと思うかもしれませんが、これは、このエンコーディングにも関係するシステムのバグを引き起こすためです...

4

2 に答える 2

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 に答える
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 に答える