здравствуйте. У меня такой вопрос. Есть программа с графичекским интерфейсом, среда VC++ Express Edition 2008. Нужно переконвертировать строку, которую мы считываем из TextBox, в ASCII (или ANSII). при попытке переконвертировать таким способом:
Код C++
в массиве k вместо символов кириллицы стоят знаки вопроса. Латиница переводится нормально. Я так понимаю, что он не может переконвертировать строку. Помогите, почему такое случается, если получится, дайте рабочий код. Заранее благодарю.
Здравствуйте, dima11221122, Вы писали:
D>здравствуйте. У меня такой вопрос. Есть программа с графичекским интерфейсом, среда VC++ Express Edition 2008. Нужно переконвертировать строку, которую мы считываем из TextBox, в ASCII (или ANSII). при попытке переконвертировать таким способом: D>Код C++
D>
D>в массиве k вместо символов кириллицы стоят знаки вопроса. Латиница переводится нормально. Я так понимаю, что он не может переконвертировать строку. Помогите, почему такое случается, если получится, дайте рабочий код. Заранее благодарю.
Encoding.GetBytes курите. Все строчки в .net хранятся в юникоде. Вам надо взять строку, и с помощью метода GetBytes нужной кодировки получить представление строки в байтах для данной кодировки. Ну а дальше берется этот массив байт и преобразуется в строку с помощью Encoding.GetString.
Здравствуйте, Codechanger, Вы писали:
C>Здравствуйте, dima11221122, Вы писали:
D>>здравствуйте. У меня такой вопрос. Есть программа с графичекским интерфейсом, среда VC++ Express Edition 2008. Нужно переконвертировать строку, которую мы считываем из TextBox, в ASCII (или ANSII). при попытке переконвертировать таким способом: D>>Код C++
D>>
D>>в массиве k вместо символов кириллицы стоят знаки вопроса. Латиница переводится нормально. Я так понимаю, что он не может переконвертировать строку. Помогите, почему такое случается, если получится, дайте рабочий код. Заранее благодарю.
C>Encoding.GetBytes курите. Все строчки в .net хранятся в юникоде. Вам надо взять строку, и с помощью метода GetBytes нужной кодировки получить представление строки в байтах для данной кодировки. Ну а дальше берется этот массив байт и преобразуется в строку с помощью Encoding.GetString.
Здравствуйте, Codechanger, Вы писали:
D>>А разве в моем примере не это реализовано?
C>Нет. Вы получаете массив байтов для юникодной строки. А надо массив байт ASCII.
C>array<Byte>^unicodeBytes = convKey1->GetBytes(InKey);
C>Выделено жирным, как по идее должно быть. Т.е. вы должны вызывать метод той кодировки, к которой хотите преобразовать строку.
D>Если вы имеете ввиду вот это:
D>Encoding^ convKey=Encoding::ASCII; D>array<Byte>^unicodeBytes = convKey->GetBytes(InKey);
D>то оно тоже не работает. Вопросики вместо кириллицы выводятся по-прежнему((
У вас в textbox строка уже в UNICODE, а не в UTF8.
Более того — каких таких "русских буковок" вы хотите в семибитной кодировке ASCII ?
Вообщем — сначала разберитесь чего вам надо и зачем.
Здравствуйте, Nikolay_P_I, Вы писали:
D>>Если вы имеете ввиду вот это:
D>>Encoding^ convKey=Encoding::ASCII; D>>array<Byte>^unicodeBytes = convKey->GetBytes(InKey);
D>>то оно тоже не работает. Вопросики вместо кириллицы выводятся по-прежнему((
N_P>У вас в textbox строка уже в UNICODE, а не в UTF8.
N_P>Более того — каких таких "русских буковок" вы хотите в семибитной кодировке ASCII ?
N_P>Вообщем — сначала разберитесь чего вам надо и зачем.
Кстати, да. скорее всего вам 866-я кодовая страница нужна. Или, упаси господи, KOI8-R