MySQLのVARCHAR(156)は、156のマルチバイト文字を格納していませんか?

私は UTF-8 形式でエンコードされた156バイトのマルチバイトテキストを持ち、PHP関数
mb_strlen($ text、 'UTF-8')によって156長さ私はすべてを
VARCHAR(156)で保存できることを期待していました。しかし、テキストのかなりの部分が切り捨てられました。

これは私の元のテキストです:

ウィキワン、白血病予防。

     

大小数(λ – 、λ – )は桁です。 1930〜関数s(x、y)= x x +入力x xχxとy
  Σyは、変数の名前です。 .123456

のように、あなたは、

これは私がMySQLで得たものです:

위키백과, 백과사전.

대수(λ -, lambda -)는 함. 1930년대 다. 함수 s(x,
y) = x*x + ìž…ë ¥ x 것ì´ë‹¤. x ↦ x 와 y ↦ y 는
변수ì

これは、私のWebページでクエリを実行すると生成されるものです。

ウィキワン、白血病予防。

     

大小数(λ – 、λ – )は桁です。 1930〜関数s(x、y)= x * x +入力x xχxとy
  ↦yは変数

Stack Overflowにも同様の質問がありますが、それは対処していないようです私の質問。表
CHARSET = utf8 の照合順序が UTF-8、一般CI
に変更され、列照合では表のデフォルトが使用されます。以下のように、システム変数とともにMySQLバージョン5.5.14を使用しています。

+--------------------------+----------------------------------------+
| Variable_name            | Value                                  |
+--------------------------+----------------------------------------+
| character_set_client     | utf8                                   |
| character_set_connection | utf8                                   |
| character_set_database   | utf8                                   |
| character_set_filesystem | binary                                 |
| character_set_results    | utf8                                   |
| character_set_server     | utf8                                   |
| character_set_system     | utf8                                   |
| character_sets_dir       | /usr/local/mysql/share/mysql/charsets/ |
| collation_connection     | utf8_general_ci                        |
| collation_database       | utf8_general_ci                        |
| collation_server         | utf8_general_ci                        |
+--------------------------+----------------------------------------+

更新:

Homer6が提案したPHPスクリプトで mysqli_query($ cxn、 "SET NAMES
utf8")
を実行した後、元のテキストごとに156文字とレンダリングが行われました。

しかし今、私のWebページで生成されるものは次のようになります。

????、???? λ(λ – 、λ – ) ? 1930年? ? ?? s(x、y)= x x +Δバツ
  ???バツ ?バツ ? y? y? ??? ??? ?? (x、y)? x
x + y y?
(u、v)? u
u +   v * v?.123456

誰でも助けてくれますか?

ベストアンサー

あなたは624にサイズを四倍しようとすることができますか?私はサイズが文字ではなくバイトであると思う。
UTF-8は1〜4バイトの範囲で指定できます。

See http://unicode.org/faq/utf_bom.html

また、あなたは設定していますか?

SET NAMES 'utf8';

クエリを実行する前に?

または、韓国語の場合、設定するとどうなりますか

mysql_query( 'SET NAMES euckr_korean_ci' );

あなたの質問の前に?

http://dev.mysql.com/doc/refman
/5.1/en/charset-asian-sets.html

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です