1

MySQL のドキュメントでは、文字列関数REPLACE()は「マルチバイトセーフ」であると言われています。ロシア語の文字セットの操作に問題があります。

    SELECT REPLACE('оофо', 'о', '*'); -- "**ф*", everything is correct
    SELECT REPLACE('оофоо', 'о', '*'); -- "**фоо", NOT CORRECT

問題の原因はどこにあるのでしょうか?

追加情報:

OS - Windows 7 (Russian),
SELECT CHARSET('оофоо'); -- "utf8",
SELECT LENGTH('оофоо'); -- "6".
4

1 に答える 1

1
  1. データベースの文字セット/連合が UTF-8 であることを確認してください

  2. これらのロシア語の文字 (フォーム、テキストエリア) を挿入するページで、 を設定して、エンコーディングが UTF-8 であることを確認してContent-Type to text/html; charset=utf-8ください。ロシア語のテキストをフォーム入力に直接入力します。

  3. データベースに挿入するこのフォームを処理する処理ページでは、事前に別のクエリでデータを挿入する前にSET NAMES utf8、UTF-8 として保存されている ことを確認してください。

  4. ビューでデータベースのコンテンツをレンダリングするときは、Content-Type is text/html; charset=utf-8.

  5. content-type がwi​​ndows-1251 または iso-8859-1/latin1でないことを確認してください。データベースの文字セット/連合が ISO-8859-1/Latin1 でないことを確認してください。


詳細については、エンコーディングの修正を参照してください。

于 2012-08-18T23:08:09.700 に答える