ここ数日、髪を引っ張っています。私はググってスタックオーバーフローしましたが、成功しませんでした。
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) に適切に保存していますか。
手がかりをありがとう!