1

私のデータベース テーブルの文字列列はnvarchar.

N'しかし、アプリケーションを使用してデータを挿入するときに、プレフィックスを追加するのを忘れていました。そのため、表示は Web では UTF-8 ではありません。これは多くの問題を引き起こします。

T-SQL コマンドを使用して、既存のすべてのテーブルとすべての文字列列のデータを UTF-8 に置き換えるにはどうすればよいですか?

4

2 に答える 2

2

まず、SQL Server は UTF-8 をサポートしておらず、 UTF-16 をサポートしていることに注意してください。そのため、アプリケーション コードにエンコードの問題がまだ残っている可能性があります (サンプル データやコードを示していないため、何が起こっているのかを正確に言うのは困難です)。

UPDATEそうは言っても、単純にデータを Unicode に変更することはできません。

declare @t table (c nchar(1))

insert into @t select '말'
insert into @t select N'말'

select c, ascii(c), unicode(c) from @t

update @t set c = cast(c as nchar(1))

select c, ascii(c), unicode(c) from @t

ご覧のとおり、N接頭辞を使用しない場合、文字 말 は ASCII 63 として格納されます。明示的に Unicode に変換したとしても、SQL Server は、それが本当に Unicode コード ポイントであることを意味していることを魔法のように知る方法がありません。 47568. したがって、できることは、戻っINSERTてデータを正しく再構築することだけです。

于 2013-05-10T13:45:39.720 に答える