2011-12-09 20 views
1

私のデータベースにGoogleからの応答を保存しています。私のデータベースの文字にアクセント記号を格納する方法

このような応答の1つは、oの上にアクセント記号があります。町はリンコンです。 (私はあなたを見るためにここにアクセント記号を置くだろうが、私はどのように知りません。)

を応答がわたしのMySQLデータベースに格納されている場合、それは次のようになります。Rincón

私は、これがなければならないことを実現します照合とは関係がありますが、私はそこに非常に多くのデータがあるので、データベースを変更することについては心配しています。このフィールドに現在適用されている照合順序はutf8_general_ciです。

誰でもアドバイスできます: 1)utf8_general_ciは正しい照合ですか? 2)私のAjaxリクエストで何らかの形でこの照合を指定する必要がありますか?

は....

+0

どのようなプログラミング言語をお使いですか?たとえば、PHPの場合は、データベースに格納する前にデータをmb_convert_encodingしてください。 – marcocamejo

+0

私はPHPを使用しています。 mb_convert_encodingでどのような引数を使用したいですか? – user418775

答えて

2

UTF-8をいただき、ありがとうございます(一般的に)世界に設定された任意の文字のための「安全な」エンコーディングです。 (常に効率的であるとは限らず、UnicodeがCJKスクリプトを「統一ハン」モデルでアンダー・プレゼンテーションしているのですが... ...)

しかし、あなたのインターフェース・プログラム)はUTF-8との間で正しく変換されません。たとえば、ISO-8859-15やMS-DOSなどの1バイトのヨーロッパ言語エンコーディングを使用して、UTF-8データ(1文字をさまざまなバイト数に分散できる)のように表示されます。 CP-1451またはそれに類するもの。

あなたは間違っておそらく正しくデータを格納が、ロードそれをしています。あなただけmysql端末プログラムまたは類似を使用している場合は、お使いの端末がUTF-8を使用するように設定されていることを確認します(Unix/Linuxシステム上で、localeはおそらく、.utf8で終わるものになるはずです例えば鉱山はLANG=en_US.utf8あり)

GUIツールなどを使用してデータを取得する場合は、その文字セットの設定/環境設定パネルを確認してください。

あなたが書いたアプリケーションに誤って翻訳された文字を戻す場合は、言語の設定ツールを調べてください。 (| HTML | XHTML XML)ファイルでcharset=utf8を宣言した。これは、Webに送信されている場合、あなたは確認して、(おそらく、INSERTルーチンは右のそれを持っていますが、SELECTルーチンは、それが間違っているか?)

をと適切な場所、またはは、データベースからテキストを挿入するときにiconvのようなものを使用して、UTF-8から文書の文字セットに変換し直します(可能な場合)。 (ほとんどの非Unicode文字セットはUnicodeのサブセットを表すことができます;例えば、ISO-8859-15セットはヨーロッパ言語をカバーする上でまともな仕事をしますが、キリル文字、アラビア文字、またはCJK文字書記システムをサポートしていません)Perlでは、パス引数をopenに使用するか、binmodeを使用して、 "ファイルハンドル"ストリームに透過文字セット変換レイヤーを設定することができます。

+0

javascriptアラートを使用してジオコードの戻り値を表示すると、「Rincón、PR、00602」が表示されます。私はまた、この同じ値が私のWebアプリケーション内のdivに書き込まれて参照してください。その後、Webアプリケーションをリロードすると(データベースからデータを取得するよう強制されます)、Rincón、PR、00602と表示されます。phpMyAdminを使用して格納された値を表示すると、Rincón、PR、00602も表示されます。情報ヘルプ? – user418775

+0

HTTPヘッダーまたはHTMLヘッダーで文書のコンテンツタイプ(例: 'text/html; charset = utf8')を確認してください。 (HTTP 'Content-Type:'またはHTML 'meta http-equiv'' Content-Type');それらがすでにUTF8である場合は、PHPスクリプトが実行するロケールがUTF8に設定されているか、スクリプト内で 'iconv'を使用して文字エンコーディングを変換する必要があります。残念なことに、私はPHPのファンでもありません(つまり、ファンではありません)。なぜなら、どこを探すのか100%確信しているわけではありませんが、 '$ _POST'から読み込んだときに壊れてしまう可能性があります。等。 – BRFennPocock

+0

http://stackoverflow.com/questions/332781/phpmyadmin-displays-japanese-characters-as-a-bunch-of-question-marks-even-if-is mysqli_set_charset($ mysqli-> set_charset( "utf8"); ' – BRFennPocock

関連する問題