エンコードに問題があります。 UTF-8でエンコードされたファイルのデータをSQL Server 2008データベースに格納したいSQL ServerにはUCS-2エンコーディングしかないので、取得したデータを明示的に変換することに決めました。SQL Server 2008にUTF8データを挿入
// connect to page file
_fsPage = new FileStream(mySettings.filePage, FileMode.Open, FileAccess.Read);
_streamPage = new StreamReader(_fsPage, System.Text.Encoding.UTF8);
は、ここでデータの変換ルーチンです:
private string ConvertTitle(string title)
{
string utf8_String = Regex.Replace(Regex.Replace(title, @"\\.", _myEvaluator), @"(?<=[^\\])_", " ");
byte[] utf8_bytes = System.Text.Encoding.UTF8.GetBytes(utf8_String);
byte[] ucs2_bytes = System.Text.Encoding.Convert(System.Text.Encoding.UTF8, System.Text.Encoding.Unicode, utf8_bytes);
string ucs2_String = System.Text.Encoding.Unicode.GetString(ucs2_bytes);
return ucs2_String;
}
重要なタイトルのコードをステップ実行、変数のウォッチは、両方のUTF-8およびUCS-2文字列の正しい文字が表示されます。しかし、データベースでは - 部分的に間違っています。一部の特殊文字は正しく保存されますが、他の文字は正しく保存されません。
- 誤:nは
- Nとなる右:EまたはEが正しく挿入され、例えばあります。
問題の原因と解決方法を教えてください。事前に
Thans、 フランク
このエンコード/ Unicode/UTFの情報は、まだ頭痛を与えています。とにかく、あなたは頭の爪に当たった。列をvarcharからnvarcharに変更すると、文字が正しく格納されます。どうもありがとう! – Aaginor