SQLを使用してmysqlに特定のUNICODコード値の文字を挿入する方法

1400 ワード

この文字は入力法などで入力できないし、システムに正しく表示できないか、見えない文字である可能性もあります.では、このような文字をデータベースに挿入するにはどうすればいいのでしょうか(データベースのフィールドの符号化はutf 8に指定されています).
1つの方法はプログラミング言語を借りることです.python、java、objective-cなどのプログラミング言語では、コードポイントを使用してユニコード文字を表現する方法が提供されています.
ここではギリシャ文字でβ例を挙げる.この文字のUNICODコードポイントは03 B 2、UTF-8コードはCE B 2です.様々なプログラミング言語で簡単に表現できます.
Python:u'\u03b2'
Java: "\u03B2"
Objective-C: @"\u03B2"
プログラミング言語で希望する文字を直接生成し、SQLに渡して実行すればよい.
2つ目の方法はmysqlツールまたはクライアントのコマンドラインで直接行います.まず、この文字のUTF-8符号化を取得する必要があります.次のようなオンラインツールがあります.
http://www.ltg.ed.ac.uk/~richard/utf-8.cgi?input=03B2&mode=hex
わかるβのUTF-8はCE B 2として符号化される.次に、このSQLを実行します(データベース文字セット符号化がutf-8であると仮定します):
INSERT INTO my_tbl (my_col) VALUES (UNHEX('CEB2'));
そのままβデータベースに加入しました.
ここでは、説明を容易にするために文字を表示するβ例を挙げる.これらの方法では、非表示文字を処理することもできます.可視文字を扱うだけなら、機能的な入力方式でいいです.
----------------------
入力が必要なunicode文字がBMP平面外(符号点がFFFFの範囲を超えている.この文字はUTF-8符号化またはUTF-16符号化のいずれも4バイト使用する必要がある)の場合、プログラミング言語でそのUTF-16符号化表現を使用することができる.
例えば、文字U+1 F 51 F(数字10)に対して、そのUNICOD code pointは1 F 51 F、UTF-8符号化はF 0 9 F 94 9 F、UTF-16符号化はD 83 D DD 1 Fである.プログラミング言語では次のように表現できます.
Python: u'\ud83d\udd1f'
SQLでは、このように書くことができます(データベース文字セットの符号化がutf-8であり、BMP平面以外のunicode文字がサポートされていると仮定します.MySQLでは、utf 8 mb 4を選択する必要があります.utf 8は使用できません):
INSERT INTO my_tbl (my_col) VALUES (UNHEX('F09F949F'));