Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 29.05.2018, 15:53   #11
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 11,539
Репутация: 1916

icq: 216409213
По умолчанию

Цитата:
Сообщение от Drekon Посмотреть сообщение
MultiByteToWideChar не подходит для перекодировки, которая написана в посте 1 - русский текст искажается и пробелы подставляются между символами.
Что явно говорит, что выводите вы юникод неправильно.

Цитата:
Сообщение от Drekon Посмотреть сообщение
Я так понимаю, что MultiByteToWideChar перекодирует в юникод. Значит нужно перекодировать именно в ANSI.
Может я там не зря две функции написал? Сначала из одной кодировки в юникод, потом из юникода в нужную кодировку.

Цитата:
Сообщение от Drekon Посмотреть сообщение
Просто нужно перкодировать текст, получаемый из программы CMD (командная строка).
Тогда может в cmd просто дать команду chcp 1251 и забыть о перекодировках?
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума   Ответить с цитированием
Старый 29.05.2018, 16:42   #12
Drekon
Пользователь
 
Регистрация: 25.04.2018
Сообщений: 45
Репутация: -14
По умолчанию

p51x, да сработало с использованием двух функций.
Drekon вне форума   Ответить с цитированием
Старый 29.05.2018, 17:32   #13
Drekon
Пользователь
 
Регистрация: 25.04.2018
Сообщений: 45
Репутация: -14
По умолчанию

p51x, я создал здесь тему про CMD, чтобы в этой теме не было лишнего. Можете посмотреть?
http://www.programmersforum.ru/showt...28#post1737028
Drekon вне форума   Ответить с цитированием
Старый 29.05.2018, 20:54   #14
Drekon
Пользователь
 
Регистрация: 25.04.2018
Сообщений: 45
Репутация: -14
По умолчанию

Аватар, функция "OemToChar" решила поставленную задачу, при чём эта функция легка в использовании. Но в офиц. справке написано: Warning Do not use. See Security Considerations.
Поэтому пока не понятно, что делать.

Функция "OemToCharBuff" искажает русский текст. Пока не знаю, как её использовать.
Drekon вне форума   Ответить с цитированием
Старый 29.05.2018, 23:33   #15
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 11,539
Репутация: 1916

icq: 216409213
По умолчанию

Только учтите, что оем он может быть разным...
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума   Ответить с цитированием
Старый 29.05.2018, 23:37   #16
Drekon
Пользователь
 
Регистрация: 25.04.2018
Сообщений: 45
Репутация: -14
По умолчанию

Но функции OemToChar не спрашивают, какая у меня кодировка.
Drekon вне форума   Ответить с цитированием
Старый 30.05.2018, 00:20   #17
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 11,539
Репутация: 1916

icq: 216409213
По умолчанию

Потому что оно уже в названии. OEM же. А если прочитать доку на туже MultiByteToWideChar
Цитата:
The current system OEM code page.

Note This value can be different on different computers, even on the same network. It can be changed on the same computer, leading to stored data becoming irrecoverably corrupted. This value is only intended for temporary use and permanent storage should use UTF-16 or UTF-8 if possible.
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума   Ответить с цитированием
Старый 30.05.2018, 08:48   #18
Drekon
Пользователь
 
Регистрация: 25.04.2018
Сообщений: 45
Репутация: -14
По умолчанию

А какое отношение к проблеме имеет функция "MultiByteToWideChar"? В функцию "MultiByteToWideChar" мы явно передаём имена кодировок.
Drekon вне форума   Ответить с цитированием
Старый 30.05.2018, 09:28   #19
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 11,539
Репутация: 1916

icq: 216409213
По умолчанию

Именно. MultiByteToWideChar умеет из разных кодировок, в том числе из OEM. А OemToChar умеет только из OEM.
Но вообще и это не важно. Вы считаете, что понятие OEM кодировки меняется в зависимости от того, какую страницу офф хелпа вы читаете?
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума   Ответить с цитированием
Старый 30.05.2018, 09:54   #20
Drekon
Пользователь
 
Регистрация: 25.04.2018
Сообщений: 45
Репутация: -14
По умолчанию

Я вообще не знаю, что такое OEM-кодировка и не хочу гуглить на эту тему.
Как я понял Вас, проблема с функциями "OemToChar" в том, что явно не указывается кодировка, поэтому поведение этих функций непредсказуемо.
Drekon вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кодирование и перекодирование Esoone Общие вопросы Delphi 1 20.11.2012 16:00
Перекодирование видео потока в Smooth Streaming Cronos20 WPF, UWP, WinRT, XAML 0 10.05.2011 21:18
Перекодирование русских текстов на C# Donix Помощь студентам 0 07.05.2011 12:51
перекодирование MySQL Бд mrgrudge PHP 3 16.12.2010 15:24
Перекодирование StudentPolitech Свободное общение 0 04.07.2009 21:49


19:22.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru