Tôi gặp vấn đề với mã hóa. Tôi muốn đưa dữ liệu từ một tệp được mã hóa UTF-8 vào cơ sở dữ liệu SQL Server 2008. SQL Server chỉ có tính năng mã hóa UCS-2, vì vậy tôi đã quyết định chuyển đổi một cách rõ ràng dữ liệu đã truy xuất.Chèn dữ liệu UTF8 vào SQL Server 2008
// connect to page file
_fsPage = new FileStream(mySettings.filePage, FileMode.Open, FileAccess.Read);
_streamPage = new StreamReader(_fsPage, System.Text.Encoding.UTF8);
Đây là thói quen chuyển đổi cho các dữ liệu:
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;
}
Khi bước qua đoạn code cho các chức danh quan trọng, biến chiếc đồng hồ thể hiện các nhân vật chính xác cho cả hai utf-8 và UCS-2 chuỗi. Nhưng trong cơ sở dữ liệu của nó - một phần sai. Một số ký tự đặc biệt được lưu chính xác, những ký tự khác thì không.
- sai: N trở thành một n
- Phải: É hoặc é được ví dụ chèn một cách chính xác.
Bất kỳ ý tưởng nào về sự cố và cách giải quyết vấn đề?
thans trước, Frank
Yap, công cụ mã hóa/Unicode/UTF này vẫn khiến tôi đau đầu. Dù sao, bạn nhấn móng tay trên đầu. Sau khi thay đổi cột của tôi từ varchar thành nvarchar, ký tự được lưu trữ chính xác. Cảm ơn nhiều! – Aaginor