私は次のことをしました:
- データを含むスプレッドシートがあります。行の 1 つに ü 文字が含まれています。
- これを CSV ファイルとして OpenOffice.org に保存します。文字エンコーディングを尋ねられたら、UTF-8 を選択します。
- Navicat を使用して MySQL データベース テーブル、InnoDB を UTF-8 utf8_general エンコーディングで作成し、CSV をインポートします。
- 特別なü文字を含む文字列
htmlspecialchars($string, ENT_COMPAT, 'UTF-8')
であるPHP関数を使用しようとしました。$string
エラーが表示されます: Invalid multibyte sequence in argument。で変更'UTF-8'
すると'ISO8859-1'
、エラーは発生しませんが、間違った文字が表示されます。(「未知の文字」文字は、のように見えます<?>
)
HTML フォームを使用してデータベースの文字列を更新すると、エラーが消えて文字が正しく表示されますが、Navicat でレコードを見ると、2 つの文字のように見えます。
[1/4][A with some thing on top of it]
1文字とは見なされないマルチバイト。
何が起こっているのか、どこで問題が発生しているのか、それに対して何ができるのか?