3

Utf8 の扱いに問題があります。データベースとテーブルを次のように変更しました。

       mysql>alter database database_name character set Utf8 collate utf8_unicode_ci;
       mysql>alter table table_name character set Utf8 collate utf8_unicode_ci;

文字構成と照合構成を表示するために変数をチェックインすると、次のように表示されました。

       mysql> show variables like '%character%';
              +--------------------------+----------------------------+
              | Variable_name            | Value                      |
              +--------------------------+----------------------------+
              | character_set_client     | latin1                     |
              | character_set_connection | latin1                     |
              | character_set_database   | utf8                       |
              | character_set_filesystem | binary                     |
              | character_set_results    | latin1                     |
              | character_set_server     | latin1                     |
              | character_set_system     | utf8                       |
              | character_sets_dir       | /usr/share/mysql/charsets/ |
              +--------------------------+----------------------------+
              8 rows in set (0.00 sec)


       mysql> show variables like '%collation%';
              +----------------------+-------------------+
              | Variable_name        | Value             |
              +----------------------+-------------------+
              | collation_connection | latin1_swedish_ci |
              | collation_database   | utf8_unicode_ci   |
              | collation_server     | latin1_swedish_ci |
              +----------------------+-------------------+
              3 rows in set (0.00 sec)

/etc/my.cnf を次のように設定すると、うまくいきました。

        [mysqld]
        character-set-server=utf8

        [mysql]
        default-character-set=utf8

参考までに、JavaScript での Utf8 エンコードのコードは次のとおりです。

        var Utf8 = {
            encode : function (string) {
                     string = string.replace(/\r\n/g,"\n");
                      var utftext = "";
                      deleteCookie('unicodeLength');
                      for (var n = 0; n < string.length; n++) {
                      var c = string.charCodeAt(n);
                      if (c < 128) {
                            utftext += String.fromCharCode(c);
                      }
                      else if((c > 127) && (c < 2048)) {
                            utftext += String.fromCharCode((c >> 6) | 192);
                            utftext += String.fromCharCode((c & 63) | 128);
                      }
                      else {
                            utftext += String.fromCharCode((c >> 12) | 224);
                            utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                            utftext += String.fromCharCode((c & 63) | 128);
                      }
               }
            return utftext;
         }
    };

この 2 行が /etc/my.cnf から削除されたときに問題が発生しました。助言がありますか?

4

1 に答える 1

-1

/etc/my.cnf に skip-character-set-client-handshake を追加する必要があると思います。

これが私のものです。

[mysqld]

default-character-set=utf8   
character-set-server=utf8  
skip-character-set-client-handshake  
collation-server=utf8_unicode_ci  
init-connect='SET NAMES utf8'  
init_connect='SET collation_connection = utf8_general_ci'  
port = 3306
于 2013-05-30T08:15:46.303 に答える