Как преобразовать строку, закодированную в Windows-1250, в Unicode? - PullRequest
4 голосов
/ 23 апреля 2010

Я получаю от некоторой dll (которая является оберткой для некоторого внешнего источника данных) строки в кодовой странице Windows-1250, и я хотел бы вставить их правильно (как Unicode) в таблицу в базе данных SQL Server. Поскольку конкретная строка в базе данных, которая должна содержать эти данные, имеет тип NVarchar, мне нужно было только преобразовать ее в моем коде C # в unicode и передать в качестве параметра. Все хорошо, но я наткнулся на шаг конвертации.

Я пробовал следующее, но это не работает:

private static String getUnicodeValue(string string2Encode) //
{
    Encoding srcEncoding = Encoding.GetEncoding("Windows-1250");
    UnicodeEncoding dstEncoding = new UnicodeEncoding();
    byte[] srcBytes =  srcEncoding.GetBytes(string2Encode);
    byte[] dstBytes = dstEncoding.GetBytes(string2Encode);
    return dstEncoding.GetString(dstBytes);
}

Когда я вставляю эту возвращенную строку в таблицу, я не получаю правильные буквы, такие как Đ, đ, Č, č, Ć или ć.

Пожалуйста, помогите! :)

1 Ответ

13 голосов
/ 23 апреля 2010

проблема в string string2Encode уже в юникоде. (UTF-16 - внутренняя кодировка в .net) Так что, если вы хотите строку в windows-1250, вы должны передать byte[], затем сделать Encoding.GetEncoding("windows-1250").GetString()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...