2017-05-09 24 views
0

何らかの理由で私には分かりません。utf32_general_ciの照合(例では位置)のテーブルとlatin1_swedish_ciのテーブルがあります。KamailioテーブルのMySQL照合

私はgithub repos(https://github.com/kamailio/kamailio/blob/4.4/scripts/mysql/my_create.sql)で回答を見つけようとしていますが、照合は指定されていません。

そうですね。問題なの?どちらが正しい選択ですか?

私のKamailioバージョンは4.4.3です。

答えて

1

Kamailioとは何ですか?データベースには何が格納されますか?

現在のところ、今日のソフトウェアはすべて、UTF-8の文字エンコードを使用する必要があります。 MySQLでは、構文はCHARACTER SET utf8mb4です。

あなたは2つを言及しましたCOLLATIONs;文字エンコーディングではなく、ソート順と関係があります。言及された2つは文字セットに対応します

  • utf32 - 1文字あたり4バイトがかなり無駄です。事実上誰もそれを使用しません。私は今日それを使う良い理由はない(私が考えることができる)。
  • latin1 - 1文字あたり1バイト。西ヨーロッパを支配しますが、アジアはありません。これはMySQLの古いデフォルトです(テーブルがあるため)。

私はKamailioを変更しようとすると分かりません。

MySQLが文字セットの違いを処理する方法の注意点:MySQLに接続するときはクライアントにエンコードを指定する必要があります。ときINSERTingSELECTing(可能な場合は、必要に応じて、および)次に、MySQLはクライアントエンコードとエンコーディングの間で変換します。この自動変換により、現在、西欧の文字には何も間違いはありません。しかし、ギリシャ語、中国語などは、latin1に格納しようとすると、乱れ/失われます。

+0

次に、バイナリは透過的ですか? –

+1

@JavierValencia - _If_テーブル内の 'CHARACTER SET'は文字を保持することができ、_if_クライアント内の文字のエンコーディングを正しく識別し、_if_ 2つの文字セットの間にマッピングがあると、MySQLは正しくビットを変更しますフライ( 'INSERT'と' SELECTing')です。 'binary' _code_は、静的/動的設定によって駆動されます。 'バイナリ'データは_Operating Systems_で同じように保存されます。 (あるいは別のものを求めていますか?) –

+1

'utf8mb4'と' utf32' _probably_は他の文字セットにマップできます。 (「それは彼らの仕事です」) –