を使用しようとすると、私は次のことをしました:PHPのはhtmlspecialchars()関数のエラーUTF-8文字列
- 私はデータでスプレッドシートを持っています。行の1つにü文字が含まれています。
- 私はこれをOpenOffice.orgのCSVファイルとして保存します。文字エンコーディングを求められたら、私はUTF-8を選択します。
- Navicatを使用して、MySQLデータベーステーブル、InnoDBをUTF-8 utf8_generalエンコーディングで作成し、CSVをインポートします。
- 私はPHP関数
htmlspecialchars($string, ENT_COMPAT, 'UTF-8')
を使用しようとしています。ここで、$string
は特殊なü文字を含む文字列です。
エラーが表示されます。引数に無効なマルチバイトシーケンスがあります。 'UTF-8'
を'ISO8859-1'
に変更すると、エラーはスローされませんが、不正な文字が表示されます。 ( '不明な文字'の文字は<?>
のように見えます)
HTMLフォームを使用してデータベースの文字列を更新すると、エラーが表示されなくなり、文字が正しく表示されます。
[1/4][A with some thing on top of it]
1 character.`で何が起こっているのか
、物事が間違っている、と私はそれについて何ができると見られていないいくつかのマルチバイト:Navicatは、それは2つの文字を探します?
mysql一般クエリログによれば、実際には 'SET NAMES utf8'がMySQLサーバに送られます。このプロセスにはフォームはありませんが(レコードを更新するときにフォームがあります)、HTMLメタタグを使用してUTF-8に設定されています。 (ただし、フォームが使用される前に、エラーが既にポップアップしています)。 –
@Pelleは、その接続のサーバー*に実際に送信されたことを確認できますか?そして確認するために、あなたが引用したエラーは実際には 'htmlspecialchars()'によってスローされますか? –
それを考え出した。すべてのものはUTF-8でしたが、データのSELECTに使用された場合は例外です。 selectステートメントを修正する前にSET NAMES UTF8を置く。 –