Следует иметь в виду, что Вы, возможно, должны получить доступ к базе данных с чем-то, что не понимает, что HTML закодировал текст (например, инструмент создания отчетов). Я соглашаюсь, что пространство является надуманным вопросом, но по моему скромному мнению, помещая кодирование HTML в знание перемещений базы данных Вашего представления/фронтэнда в самый низкий уровень в приложении, и это - ошибка дизайна.
Открыть Файл-> Расширенные параметры сохранения ...
Выберите Unicode (UTF-8 с подписью) - Кодовая страница 65001
в комбинированном коде кодирования. Компилятор будет использовать выбранную кодировку автоматически.
Согласно ответу Microsoft здесь :
, если вам нужны символы, отличные от ASCII, то «официальный» и переносимый способ получить их - использовать \ u ( или \ U) шестнадцатеричное кодирование (которое, я согласен, просто некрасиво и подвержено ошибкам).
Когда компилятор сталкивается с исходным файлом, у которого нет спецификации, компилятор читает вперед на определенное расстояние в файл, чтобы увидеть если он может обнаружить какие-либо символы Unicode - он специально ищет UTF-16 и UTF-16BE - если он не находит ни того, ни другого, он предполагает, что у него есть MBCS. Я подозреваю, что в этом случае он возвращается к MBCS, и это является причиной проблемы. Visual C ++ Compiler Team.
Хорошим решением будет размещение текстовых строк в файлах ресурсов. Это удобный и портативный способ. Вы можете использовать библиотеки локализации, такие как gettext , для управления переводами.
Для VS вы можете использовать:
#pragma setlocale( "[locale-string]" )
В качестве кодировки файла будет использоваться кодовая страница ANSI по умолчанию для локали.
Но в целом это плохо идея жестко закодировать любые видимые пользователем строки в вашем коде. Храните их в каких-то ресурсах. Подходит для локализации, простой проверки орфографии, обновления и т. Д.
IMHO, все исходные файлы C ++ должны быть в строгом формате ASCII. Комментарии могут быть в UTF-8, если редактор поддерживает его.
Это делает код переносимым между платформами, редакторами и системами управления версиями.
Вы можете использовать \ u
для вставки символов Unicode в широкую строку:
std::wstring str = L"\u20AC123,00"; //€123,00