テキストエンコーディングに小さな問題があります。
SQL Server 2008データベースからロードしている2つの文字列があります(nvarchar-field)
データベースからそれらをロードした後、VisualStudio2010はウォッチウィンドウに次のように表示します。
str1 = "Test"
str2 = "Test"
しかし、str1 = str2
リターンとの比較False
これらの文字列をUTF8エンコーディングを使用してファイルに書き込むと、期待どおりの結果が得られます。
テスト
テスト
これらの文字列をANSI(デフォルト)でファイルに書き込むと、結果は期待どおりにエンコードされません。
?テスト
テスト
文字列をバイトに変換する:
System.Text.Encoding.Default.GetBytes(str1) 'Returns ByteArray {63, 84, 101, 115, 116}
System.Text.Encoding.Default.GetBytes(str2) 'Returns ByteArray {84, 101, 115, 116}
System.Text.Encoding.UTF8.GetBytes(str1) 'Returns ByteArray {239, 187, 191, 84, 101, 115, 116}
System.Text.Encoding.UTF8.GetBytes(str2) 'Returns ByteArray {84, 101, 115, 116}
ANSIエンコーディングの場合のバイト63、またはstr1のUTF8エンコーディングの場合のバイト239、187、191はどこから来ていますか?
さて、バイト239、187、191はUTF8のBOMです。ここでの質問は、おそらく次のようになります。str1のBOMを取得するのに、str2のBOMを取得しないのはなぜですか。
(値は、データベースに挿入するWebサービスに渡される値です。初期値は、私が制御できないクライアントによってこのWebサービスに渡されます)