4

MySQLテーブルをデフォルトのケースに依存しないスウェーデン語またはASCII文字セットからutf-8に移行しようとするときに注意すべきヒントや落とし穴はありますか?私が関わっているプロジェクトのいくつかは、より良い国際化を目指して努力しており、データベースはこの変化の重要な部分になるでしょう。

データベースの変更を検討する前に、すべての入力/出力が同じ文字セットを使用していることを確認するために、UTF-8文字エンコード(重要度の低いものから高いものへ)を使用するように各サイトを変換します。

助けてくれてありがとう

4

5 に答える 5

2

いくつかのヒント:

  • CHARおよび列VARCHARは、最大 3 倍のディスク容量を使用します。(おそらく、スウェーデン語の単語のディスク領域が大きくなることはあまりないでしょう。)
  • SET NAMES utf8データベースの読み取りまたは書き込みの前に使用します。そうしないと、部分的に文字化けしてしまいます。
于 2008-09-05T23:10:20.210 に答える
1

答えを見つけるために、次のサイト/記事を調べます。

すべてのソフトウェア開発者が絶対に、積極的に Unicode と文字セットについて知っておく必要がある絶対最小値 (言い訳はありません!) - Joel on Software

UTF-8 と Unicode に関する FAQ

Hanselminutes エピソード「Michael Kaplan との国際化の整理」

また、これを書いているときに、Derek Sivers @ O'Reilly ONLamp Blog による非常に話題の投稿を見つけました。latin1 の MySQL データを utf8 utf-8 に変換する

于 2008-09-05T22:39:53.340 に答える
1

インデックスの長さの制限に注意してください。テーブルが構造化されている場合は、次のように言います。

a varchar(255) b varchar(255) キー ('a'、'b')

キーの長さの制限である 1000 バイトを超えようとしています。255+255 は問題ありませんが、255*3 + 255*3 は機能しません。

于 2008-09-16T14:33:08.317 に答える
0

照合は必ずしも好ましいとは限りません。ウムラウトが非ウムラウトバージョンに照合されるようになりますが、これは常に正しいとは限りません。utf8_binを使用することもできますが、大文字と小文字が区別されます。

于 2008-09-16T03:05:58.717 に答える
0

CHARおよび列VARCHARは、最大 3 倍のディスク容量を使用します。

序数が 128 を超える latin-1 で埋め尽くされている場合のみ。それ以外の場合、UTF-8 のスペース使用量の増加は最小限に抑えられます。

于 2008-09-05T23:12:00.640 に答える