2011-01-13 1 views
0

私はCSVにエクセルファイルをエクスポートしてからMySQLデータベースにアップロードしますが、™(商標)を持つすべてのエントリは小さなa(ª)に変わります。MySQLは™をªに変更していますか?

データベースは、各行と同様にutf8_unicode_ciに設定されています。なぜこれがまだ起こっているのか?

+0

私は同じ種類の問題を抱えていて、PHPを使用してデータを読み込む方が良いと思われます。 – Sonny

+1

Excelはエクスポートにどのエンコードを使用していますか?私の推測は、UTF-8ではありません。 –

答えて

1

変換が簡単です。 Windowsを使用している場合は、Notepad ++などのテキストエディタを無料でダウンロードできます。メモ帳++では、テキストファイルをUTF-8にエンコードまたは変換できます(メニューバーの[エンコーディング]に移動します)。

TextMateのようなMacエディタでも同じことが可能です。ファイル>エンコーディングで再オープンする。

Excelは実際にExcel をExcelからWindows形式で自動的にエンコードします。ただし、別のエンコーディングを使用するファイルを開くために使用される場合は、そのエンコーディングを保持する必要があります。 UTF-8でエンコードされたファイルをWindows-1252に変換しません。

+0

Yup - ファイルが直接アップロードされていないなどの場合の便利な回避策 –

+1

私はMicrosoft製品にうんざり!情報は、データベースのバックエンドでちょっと混乱していますが、うまく印刷されています。 ありがとう! – Carson

0

問題は、Excel CSVファイルが(おそらく)Windows-1252形式であることです。

そのように、あなたが最も可能性が高い例えば、このようなmb_convert_variables

としての機能を使用してUTF-8形式に各項目を変換するためにPHPを使用する必要があります:

$utfVersion = mb_convert_variables('UTF-8', 'Windows-1252', $windowsVersion); 

なお、かもしれませんは、コマンドラインツールなどを使ってMySQLテーブルを表示してもまだ誤って表示されますが、PHPに戻すと正常に表示されます。

1

mojibakeに1つの置換えがある場合、UTF-8が関与している可能性は低いです。

元のデータが「™」は0xAAをにエンコードし、0xAAをがª」にデコードするところwindows-1252windows-1254-1258ISO-8859-1-9、および-15も可能である)と誤解しまったMacintosh encodingsの一つであったと思わ'

関連する問題