短編小説:Ruby on Railsアプリ(デフォルトのUTF-8エンコーディング)でテキストフィールドを使用するか、MySQL GUIを使用して直接入力することにより、「
4 に答える
どのバージョンのMySQLを使用していますか?5.5より前の場合、その文字は4バイトかかり、MySQLは最大3バイトのUTF-8(つまり、BMPの文字)しかサポートしないため、その文字を保存できません。MySQL 5.5では4バイトのUTF-8のサポートが追加されましたがutf8mb4
、文字セットとして指定する必要があります。
参照:http ://dev.mysql.com/doc/refman/5.5/en/charset-unicode.html
U + 20089は、Unicodeセット(CJK統合漢字拡張BF0 A0 82 89
)で定義された文字であり、 UTF-8としてエンコードされるとバイトシーケンスになります。問題はおそらくキャラクターではなく、スタックのどこかにあるソフトウェアによるキャラクターの処理にあります。
万が一、これが問題のある文字であるという固有の技術的理由がある場合は、Unicode標準またはFAQでカバーされている可能性があります。
それを二重にエンコードして保存するとどうなりますか?
もう一度エンコードして保存します。その後、取得時に一度デコードしてhtmlでレンダリングします。
サポートされているものとサポートされていないものの両方としてリストされているという質問には答えられません。おそらく、fileformat.infoサイトを運営している人々にとっての質問です。
UTF-8は、任意のUnicode文字(コードポイント)を表すために使用できます。これはすべてのUTFに当てはまります。そのために必要なバイト数はさまざまですが(UTF-8では、たとえば、識別したコードポイントに4つ必要ですが、ローマ数字の「A」には1つだけ必要です)、すべてのUnicode文字は次のように表すことができます。すべてのUTF。それが彼らの目的です。(詳細はこちら。)
アプリの1つ(または複数)のレイヤーでエンコードの問題が発生しているように聞こえます。最初に確認する場所は、アプリが提供するページです。使用している文字セットが示されていますか?ページに返されるヘッダーをチェックして、次のヘッダーがあるかどうかを確認することをお勧めします。
Content-Type: text/html; charset="UTF-8"
...それらの中で。そうでない場合は、HTML自体で同等のタグを探してください。ただし、これを行うには適切な方法ではないmeta
ことを読んだことを思い出しているようです。meta
ヘッダーが特定されていない場合、適用されるデフォルトはおそらくISO-8859-1です(一部のブラウザーは代わりにWindows-1252を使用する場合があります)。これは、ソーステキストがUTF-8でエンコードされている場合は機能しません。
次に見る場所はデータベースです。MySQLはデフォルトでテキストをUTF-8に格納するとは思わないので、MySQL構成でそれを実行していることを確認する必要があります。
あなたの質問から、私はあなたがそれを必要としないと思います、しかし私はジョエル・スポルスキー(言い訳なし!)による記事「絶対に最小限のすべてのソフトウェア開発者絶対に、積極的に知っていなければならない」の必須プラグで終わります誰かがコメントに差し込むのを防ぐためだけなら)。:-)