2

ここ数日、髪を引っ張っています。私はググってスタックオーバーフローしましたが、成功しませんでした。

csv ファイルからいくつかのデータをインポートしています。この CSV ファイルは、Windows または Mac のいずれかの Excel で生成され、「Windows-1251」と「MacRoman」の 2 つの異なるエンコーディングが提供されます。両方とも ISO-8859-1 のバリアントであり、mb_detect_encoding は役に立ちません。リストに最初に入れたエンコーディングを常に検出します。

例えば ​​:

mb_detect_encoding($buffer, 'macroman, windows-1251, UTF-8');

「マクロマン」をプレゼントします。

同じ文字列で、試してみます:

mb_detect_encoding($buffer, 'windows-1251, macroman, UTF-8');

「window-1251」が表示されます。

では、どうすれば適切に違いを生むことができるでしょうか? DB に挿入するには、入力文字列 (csv ファイルの内容) を utf-8 に変換する必要があります。

多分私は何かを逃していますか?皆さんは通常、どのようにして csv ファイルを解析し、データを DB (utf8) に適切に保存していますか。

手がかりをありがとう!

4

1 に答える 1

0

これが適切に処理されるようにする唯一の方法は、最初に csv ファイルを保存するためのプロセスを定義することだと思います。次に、入ってくるものをutf8_encodeするだけでうまくいきます...

于 2011-04-27T09:33:07.673 に答える