0

POSTリクエストを介してPHPに渡したいObjective-CNSString(たとえば、「GabrielGarcíaMárquez」)があります。これにより、MySQL挿入が呼び出され、文字列がutf8-bin列に追加されます。問題は、文字列が途中で形を変えてしまうことです。これを防ぐために、この件に関するすべてのStackOverflowの投稿を読みました。

POSTリクエスト(文字セットUTF-8を使用)には、「Gabriel Garc \ U00edaM\U00e1rquez」が含まれています。

その文字列をエンコードまたはデコードせずにすぐにutf8-bin列に挿入すると、MySQLの結果は「4761627269656c2047617263c3ad614dc3a1727175657a」になります。文字列をutf8_decode()でラップすると、結果は「GabrielGarc」になります。文字列をutf8_encode()でラップすると(ねえ、なぜですか?)、結果は最初の文字列と同じになります。

このテキストがゴミに変わるのを防ぐために私は何が欠けていますか?

これをさらにいらいらさせるためのいくつかの注意事項:

  • 挿入クエリの前にmysql_set_charset('UTF8'、$ conn)を呼び出します。
  • テーブルはutf8_binで照合され、列はutf8_binです。
4

1 に答える 1

0

おっと...これはphpMyAdminのバグです。'4761627269656c2047617263c3ad614dc3a1727175657a'は、驚くべきことに、別の環境では正しいです。たとえば、MySQLWorkbenchで読みやすく印刷されます。それを理解するのにたった2日しかかかりませんでした...

于 2012-07-01T06:19:57.367 に答える