SQL Serverは何らかの形でVARCHAR
列のエンコードを強制するか、制御しますか?私が閲覧したドキュメントでは、照合(ソートと比較のルール)とエンコーディング(文字のバイト表現)について明確な区別はありません。照合とエンコードの関係
私はすべてがModern_Spanish_CI_AS
(データベース、テーブル、列を含む)のSQL Serverインスタンスを持っています。これは、Windows-1252
という印象を受けました。データベースには、Windows-1252も使用するアプリケーションが作成されます。最近、UTF-8を使用して誤って構成されたアプリケーションがデータを書き込んでいましたが、驚いたことに、SQL ServerはUnicodeカタログ全体をうれしく受け入れています。テーブルがどのアプリケーションに属しているかを問題にします。
私は六角にキャスト:
SELECT foo, CAST(foo AS VARBINARY(MAX)) AS hex
FROM ...;
...私はテーブルが属するどのようなアプリケーションに応じて異なるエンコーディングを参照してください。
アプリの初回起動:
€Á 0x80C1
- を
セカンドアプリ:
€Á 0xAC20C100
...生キャラクタは正しく表示されます。
SQLクライアントはソースコードをどのように知ることができますか?
編集:両方のアプリケーションが同じテーブルに書き込む場合私はこれを見つける:
€Á 0x80C1
ۈ 0xE282ACC381