LINUX.ORG.RU

Еще раз о unicode в C++.

 


1

1

Программа на С++ имеет результатом своей работы файл xml в кодировке windows 1251. Для того чтобы программу можно было портировать на линукс и вообще как лучше хранить строки внутри программы - unicode? А потом перед записью файла переводить их в windows 1251?

★★

телепаты в отпуске.

уточните, что за программа, чем взаимодействует с пользователем-консоль там, Qt, gtk, winapi etc

ckotinko ☆☆☆
()
Ответ на: комментарий от ckotinko

Библиотека получает на вход данные, производит с ними некие манипуляции и в том числе генерирует xml который должен быть в windows 1251. Входные строки наверное тоже в том же формате если на виндах. Но так то я хочу чтобы код работал и на линуксе. Выходные данные в любом случае windows 1251.

mio ★★
() автор топика
Ответ на: комментарий от mio

это самый простой способ не меняя программу получить уникод на выходе. на входе iconv -f utf-8 -t cp1251

ckotinko ☆☆☆
()
Ответ на: комментарий от mio

если ты в любом случае всегда будет работать с cp1251, то почему бы и не хранить внутри программы в cp1251 ?

Reset ★★★★★
()

В какой кодировке удобнее, в той и обрабатывай. Как это связанно с тем в какой кодировке оно будет храниться в файле?

erfea ★★★★★
()
Ответ на: комментарий от Reset

Что самое интересное часть выходных файлов для других адресатов должна быть utf-8 а часть для прочих cp1251.

mio ★★
() автор топика
Ответ на: комментарий от mio

А UTF8 даже блокнот в винде умеет... развечто кастомный юзерский софт.

Jetty ★★★★★
()
Ответ на: комментарий от Jetty

А... да, все верно :) Это я напутал... UTF32 кучерявее :)

Jetty ★★★★★
()

UTF-8

Как минимум. Изначально спецификация на XML говорит следующее:

[Definition: A parsed entity contains text, a sequence of characters, which may represent markup or character data.] [Definition: A character is an atomic unit of text as specified by ISO/IEC 10646:2000 [ISO/IEC 10646]. Legal characters are tab, carriage return, line feed, and the legal characters of Unicode and ISO/IEC 10646. The versions of these standards cited in A.1 Normative References were current at the time this document was prepared. New characters may be added to these standards by amendments or new editions. Consequently, XML processors MUST accept any character in the range specified for Char. ]

Взято из http://www.w3.org/TR/REC-xml/, раздел 2.2 Characters

Таким образом, указание кодировки в виде windows 1251 является извращением на почве necrosoft'а.

mr_noone
()
Ответ на: UTF-8 от mr_noone

Тьфу, чёрт!!!

Прошу прощения. Промазал с цитатой:

The mechanism for encoding character code points into bit patterns may vary from entity to entity. All XML processors MUST accept the UTF-8 and UTF-16 encodings of Unicode [Unicode]; the mechanisms for signaling which of the two is in use, or for bringing other encodings into play, are discussed later, in 4.3.3 Character Encoding in Entities.

mr_noone
()
Ответ на: комментарий от Jetty

Code points U+10000 to U+10FFFF

Code points from the other planes (called Supplementary Planes) are encoded in UTF-16 by pairs of 16-bit code units called a surrogate pair

Deleted
()

Как хранить строки внутри зависит от того, что вам нужно делать с этими строками.
Хранить снаружи в utf-8.

andreyu ★★★★★
()
Ответ на: комментарий от akk

Эт не я упоролся. У меня вобще в данном случае не спросили.

mio ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.