[Comm] Re: кодировки [JT]

Vitaly Ostanin =?iso-8859-1?q?vyt_=CE=C1_vzljot=2Eru?=
Пн Янв 19 21:08:10 MSK 2004


On Fri, 16 Jan 2004 21:19:15 +0300
Alexej Kryukov <akrioukov на mail.ru> wrote:

> On Friday 16 January 2004 20:36, Vitaly Ostanin wrote:
> > > >
> > > > Я наткнулся на эту ситуацию при сборке XML документа на
> > > > французском в pdf. Это именно U+0092 (&#146;), в pdf он
> > > > попал белым квадратом (используется unicode-шрифт, нужный
> > > > символ в нём есть, проверено с разными шрифтами). В
> > > > html-выводе то же самое.
> > >
> > > По-моему, U+0092 != &#146;. &#146; -- это *8-битный*
> > > символ,
> >
> > 146 - это код символа в UNICODE, нотация &#146; - это код
> > UNICODE в десятичной системе счисления (XML entity для ввода
> > символа).
> 
> Да нет же! Для чисел < 256 подобные entities означают ссылку не
> на Юникод, а на место в текущей кодовой странице, которая может
> быть и 8-битной. 

Для XML это не так.
http://www.w3.org/TR/REC-xml#NT-Char
http://www.w3.org/TR/REC-xml#charencoding

> Если не верите, 

Не верю :) И все известные мне реализации XML-парсеров тоже не
верят.

> попробуйте отобразить в браузере
> документ следующего содержания:
> 
> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
> <html>
> <head>
> <meta content="text/html; charset=windows-1252"
> http-equiv=Content-Type></head>
> <body>
> <p>&#146;&#x92;&#x2019;</p>
> </body>
> </html>

Во-первых, это HTML, а не XML. А во-вторых, что это должно
доказать? Я увидел три символа, похожих на апострофы.

> > 9*16+2 = 146
> >
> > Про "8-битный символ" деликатно молчу ;)
> 
> Еще раз повторяю, что 146 == 0x92 != U+0092. Шестнадцатиричную
> систему счисления я тоже знаю ;-)

Аргументируйте. Пока не убедительно.

> > Документ собирался из XML с корректным указанием кодировки,
> > текущая кодовая страница ни при чём. Разве что сглючила в
> > notepad со вводом на французском, о чём я и говорю :)
> 
> *Какая* кодировка там была указана? koi8, что ли? 

ISO-8859-1. Вы хотите сказать, что винда использует для
французского cp1252 ?

> Факт тот,
> что, если notepad работал в 8-битном режиме, то никаких других
> кодов, кроме соответствующих cp1252, французская клавиатура
> производить не могла. В чем здесь глюк?

Не знаю, в чём работал notepad. Глюк в том (повторюсь), что
был показан один символ, записан код другого. Принадлежность
кодировке значения не имеет, т.к. xmllint перекодирует с учётом
кодировок. Если в кодировках ошибся notepad (и винда, в которой
"лепота"), то и в этом глюк.

> > > Еще раз. Судя по тому, что Вы пишете, Вам нужен был не
> > > accent aigu, а именно апостроф. Код этого символа в
> > > кодировке cp1252 -- именно 146 (0x92). Отображаться на
> > > Unicode он должен как U+2019. В кодировке iso8859-1 этого
> > > символа нет,
> >
> > Нет, мне был нужен именно accute accent, и он есть в
> > кодировке iso8859-1 :) Проблема была именно в том, что
> > блокнот записывал этот символ неправильным кодом.
> 
> Тогда объясните, в каком контексте во французском языке может
> встретиться acute accent *сам по себе*, а не над буквой. Вы же
> привели пример (d'un), а это именно апостроф.

Документ, в котором был accute accent, мне прислал автор текста
на французском, он же сообщил мне, что апостроф для замены не
подходит. Отсюда я сделал вывод, что это не апостроф. Однако сути
глюка это не меняет - записан был даже не апостроф, а символ
контрольной последовательности.

<skipped/>

-- 
Regards, Vyt
mailto:  vyt на vzljot.ru
JID:     vyt на vzljot.ru
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/community/attachments/20040119/a25113ed/attachment-0002.bin>


Подробная информация о списке рассылки community