2

mySqlテーブルでは、Latin1文字セットを使用してvarcharフィールドにテキストを格納しています。現在、当社のWebサイトはより多くの国でサポートされているため、代わりにUTF8のサポートが必要です。代わりにこれらのフィールドをUTF8に変更するとどうなりますか?これを行うのは安全ですか、それともこれらのフィールド内のデータを台無しにしますか?フィールドをUTF8に変更するときに考慮する必要があることですか?

ありがとう!

4

2 に答える 2

5

MySQLはこれをうまく処理します:

CREATE TEMPORARY TABLE t1 (
  c VARCHAR(10)
) CHARACTER SET ="latin1";

INSERT INTO t1 VALUES ("æøå");
SELECT * FROM t1; # 'æøå'

ALTER TABLE t1 CHARACTER SET = "utf8";
SELECT * FROM t1; # 'æøå'

DROP TEMPORARY TABLE t1;

編集:そして、utf-8として保存できないlatin-1文字はないので、データ損失を取得するべきではありません

于 2010-06-23T08:46:13.903 に答える
1

データベースの面では問題はないはずです。MySQLは、変更を加えた時点で、エンコーディング間のデータの変換を処理します。

WebサイトにUTF-8のサポートを追加するときは、他にも注意する必要があることがあります。

  • 最良の結果を得るには、データベースへの接続で接続文字セットとしてUTF-8が使用されていることを確認する必要があります。これは、接続時に発行することで実行できますSET NAMES utf8
  • メタタグを変更して、Webページ自体がUTF-8でエンコードされたものとしてブラウザに宣言されていることを確認する必要があります。
  • セキュリティ上の考慮事項:クロスサイトスクリプティング(XSS)攻撃の可能性を回避するために、ユーザー入力をチェックして、有効なUTF-8であることを確認する必要があります。
于 2010-06-23T09:43:42.227 に答える