LINUX.ORG.RU
ФорумTalks

[немецкий юникод]Символы u с точками и тд, некорректная работа


0

0

Мне тут приходится возиться с вгрузкой .xlsx файла автоматизированно сделанного немецкими горе-программистами.

В результате в нём есть куча строчек с названиями организаций в именах которых присутствуют немецкие спецсимволы. Но ПОЧЕМУ-ТО ни open office ни spreadsheet:xlsx ни вообще less не показывают эти символы, отображая вместо этого иероглифы (у меня en_US.UTF-8).

например: weidm黮ler

Я теряюсь в догадках куда рыть.

★★★

последовательность байт - 0xe7 0xa0 0xbd

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

вот какая-то херь. как я понял - это другой способ записать ul с точками, что-ли. то есть два символа сразу.

vahvarh ★★★
() автор топика

Подозреваю, что у твоих тевтонцев свой собственный юникод. Со скатом и октоберфестовскими официантками.

SunBurn
()
Ответ на: комментарий от RedPossum

>так в utf, не?
википедия пишет что букву Ё можно представить и как отдельный символ, и как E + модификатор

а про ascii пишет, что можно через символ BS

но ни то, ни другое не похоже на последовательность байт которая приведена вверху

dimon555 ★★★★★
()

А в новых виндах часом не UTF-16 используется?

Cancellor ★★★★☆
()

Может это просто помесь немецкого и японского, тобишь так и задумано?

drull ★☆☆☆
()

>黮

Это 0x9EEE из CJK.

ü - это или, вообще однобайтовый 0x00FC, или u + диакритика 0x0308. Ни на что из этого как-то нарисованное не похоже.

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

ответственный за сие безобразие немец в скайпе пишет что weidm黮ler на самом деле Weidmüller.

Как я уже говорил, при просмотре байтов это 0xe7 0xa0 0xbd

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

>на самом деле Weidmüller

Ну, это, как бы, очевидно :)

0xe7 0xa0 0xbd


Если побайтно, то это ç, неразрывный пробел и ½ :)

Если целиком, то такой символ в юникоде отсутствует.

Похоже, некорректно взятая подстрока. Дай всю последовательность имени файла целиком.

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

Ээээ в разных местах по разному. o_O
77 65 69 64 6D E9 BB AE 6C 65 72
77 65 69 64 6D E7 A0 BD 6C 65 72


Что самое интересное - на немецкой макоси у немца открывается нормально

vahvarh ★★★
() автор топика

Какой-нибудь из новейших ISO-8859-* ?

question4 ★★★★★
()

А в самом этом xlsx никакие кодировки не указаны?

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

>77 65 69 64 6D E9 BB AE 6C 65 72

Конфликтная последовательность - E9 BB AE.

На сколько я понимаю, в UTF-8 такой нет. Она ошибочно транслируется в 0x9EEE.

Поскольку там обычная латиница показывается как есть, а под этими тремя символами скрыт у-умляут, то это явно мультибайтовая кодировка переменной длины символа. Скорее всего эти символы ошибочно перекодированы из одной однобайтовой кодировки в другую.

В немецкой макоси какая кодировка используется? (маковских разных дофига). М.б. это результат её трансляции в latin1? (надеюсь, cp1251 или koi8-r по пути ещё нигде не играют?)

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

нет, не играют.
xlsx это несколько xml-файлов в архиве. Там указано
<?xml version=«1.0» encoding=«UTF-8» standalone=«yes»?>

Знаю также что периодически эти немцы пытаются вбить такие же символы мне в базу на что постгрес их посылает нахуй говоря что это неверные utf8 символы. (у меня в веб-морде utf8 что характерно).

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

>Weidmüller
а какая однобайтовая кодировка на маке для немецких символов и можно ли это 2 раза перекодировав получить такой бНОПНЯ?

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

хз. врядли там однобайтовая. да и генерируется это не на маке скорее всего а на винде.

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

>постгрес их посылает нахуй говоря что это неверные utf8 символы

Всё правильно. Это, действительно, неверный UTF-8 символ.

Повторюсь, скорее всего, это UTF-8, ошибочно перекодированный из одной однобайтовой кодировки в другую.

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

В общем, нужно E9 BB AE перекодировать в 75 CC 88 (это если нужно сохранить длину последовательности) или в C3 BC.

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

>0xa0
а это случайно не используется на маках, как символ переноса строки
и не было ли это раньше двумя символами переход на новую строку и сдвиг влево?

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

Если непонятно, как найти проблему перекодирвки, то проще всего тупо перекодировать по шаблону. Умляутов в немецком мало - Ü, Ä и Ö. Ну и эсцет ещё - ß.

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

>а это случайно не используется на маках, как символ переноса строки

0x0D на старых маках :) 0x0A, как и в Linux, на новых.

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

>0x0D на старых маках :) 0x0A, как и в Linux, на новых.
остаётся только предположить, что это копипаста и бужер обмена мака делает странные вещи, но как это может помочь неясно. А почему тевтонцы используют мак, а не сусе, это какие-то нетакие тевтонцы?

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

неее, cheap это к коммунистам. зеллоса попроси.

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

подозреваю что мак здесь тоже непричём, не он же генерит этот документ.

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