Спецификация исходного кодирования набора символов в MSVC ++, как gcc “-finput-charset=CharSet”

Следует иметь в виду, что Вы, возможно, должны получить доступ к базе данных с чем-то, что не понимает, что HTML закодировал текст (например, инструмент создания отчетов). Я соглашаюсь, что пространство является надуманным вопросом, но по моему скромному мнению, помещая кодирование HTML в знание перемещений базы данных Вашего представления/фронтэнда в самый низкий уровень в приложении, и это - ошибка дизайна.

15
задан Artyom 17 November 2009 в 15:49
поделиться

3 ответа

Открыть Файл-> Расширенные параметры сохранения ... Выберите Unicode (UTF-8 с подписью) - Кодовая страница 65001 в комбинированном коде кодирования. Компилятор будет использовать выбранную кодировку автоматически.


Согласно ответу Microsoft здесь :

, если вам нужны символы, отличные от ASCII, то «официальный» и переносимый способ получить их - использовать \ u ( или \ U) шестнадцатеричное кодирование (которое, я согласен, просто некрасиво и подвержено ошибкам).

Когда компилятор сталкивается с исходным файлом, у которого нет спецификации, компилятор читает вперед на определенное расстояние в файл, чтобы увидеть если он может обнаружить какие-либо символы Unicode - он специально ищет UTF-16 и UTF-16BE - если он не находит ни того, ни другого, он предполагает, что у него есть MBCS. Я подозреваю, что в этом случае он возвращается к MBCS, и это является причиной проблемы. Visual C ++ Compiler Team.


Хорошим решением будет размещение текстовых строк в файлах ресурсов. Это удобный и портативный способ. Вы можете использовать библиотеки локализации, такие как gettext , для управления переводами.

7
ответ дан 1 December 2019 в 03:14
поделиться

Для VS вы можете использовать:

#pragma setlocale( "[locale-string]" )

В качестве кодировки файла будет использоваться кодовая страница ANSI по умолчанию для локали.

Но в целом это плохо идея жестко закодировать любые видимые пользователем строки в вашем коде. Храните их в каких-то ресурсах. Подходит для локализации, простой проверки орфографии, обновления и т. Д.

1
ответ дан 1 December 2019 в 03:14
поделиться

IMHO, все исходные файлы C ++ должны быть в строгом формате ASCII. Комментарии могут быть в UTF-8, если редактор поддерживает его.
Это делает код переносимым между платформами, редакторами и системами управления версиями.

Вы можете использовать \ u для вставки символов Unicode в широкую строку:

std::wstring str = L"\u20AC123,00"; //€123,00
1
ответ дан 1 December 2019 в 03:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: