|
|
|
|
Google Site
|
|||||||
| Форумы | Регистрация | Блог | Человек Страницы | Правила форума | Ссылки | Альбомы | ЧАВО | Пользователи | Календарь | Поиск | Сегодняшние сообщения | Отметить форумы читать |
| UNIX перспективных И опытных пользователей Эксперт-на-экспертов. Узнайте современные UNIX, UNIX команды, Linux, операционные системы, системы управления, программирование, Shell, Shell скриптов, Solaris, Linux, HP-UX, AIX, OS X, BSD. |
![]() |
|
|
Резьба Инструменты | Искать в этом Thread | Оценить Thread | Режимы дисплея |
|
|||
|
Конвертировать UTF-8 кодировке шестнадцатиричное значение символа
Привет,
Я, не-ASCII символами (W), которая может быть представлена в UTF-8 кодировке в качестве эквивалента шестнадцатиричное значение (\ xC5B4). Есть ли функция в Unix преобразовать эту шестнадцатиричное значение на дисплее в charcter? |
| Рекламные ссылки |
|
|
|
|||
|
Fpmurphy Привет, спасибо за ответ.
У PLS можете указать, каким образом и какой локали это установить? Я работающий на ОС Solaris 5,8. Кроме того, это является частью более крупных проблем. На самом деле я препровождающая выше характера с помощью электронной почты. поэтому я извлечь из этого сообщения на почтовый сервер на Unix, и расшифровать его. Что происходит здесь заключается в том, что символ декодирован как (A '), который фактически 0xC5B4 annoted в ASCII (0xC5 \u003d A, 0xB4 \u003d'). Поэтому я хочу воспользоваться этим (A) и перейти к (W), непосредственно или через своих шестнадцатиричное значение (\ xC5B4). |
|
|||
|
Это означает, что процесс декодирования обрабатывает сообщения, как ISO-8859-1 (или ASCII), а не UTF-8. Существует нет "конверсия" происходит здесь. Это просто процесс декодирования Сбой основаны на неправильном предположении кодирования.
Вы пробовали провести расследование, если что-либо неверно, что приводит к сообщение не следует толковать как UTF-8? Например, вы проверьте кодировку в заголовке, было ошибочно указан как ничего кроме UTF-8? И вы можете попробовать с другими почты с UTF-8 и убедиться, что это вопрос, с особым почте (иногда неправильно почты пользователя агентом является виновником) или больше вопрос. Попробуйте переключения почтовых клиентов и посмотреть, если вы всегда можете воспроизводить это. |
|
|||
|
Привет там,
Я на самом деле с помощью Perl для получения сообщений из почтового ящика. определенный артикль Perl Модуль для кодирования / декодирования (MIME-Base64-3.07> MIME:: Base64) является одним, который будет использоваться, но при декодировании он декодирует в ascii/iso-8859-1 (хотя заголовка правильно показана кодировка UTF-а 8). В этом случае, если я хочу преобразовывать эти данные в UTF-8 обратно (как это описано выше), то есть команда / способ сделать это в Unix? |
|
|||
|
Я не очень уверен MIME:: Base64, как я не использовал его раньше. Тем не менее, сама base64 кодирование-агностиком, то есть, он кодирует / декодирует без связи в любой кодировке исходное сообщение, потому что он не только используется для кодирования текстовых данных, но и изображения, ZIP-файлы или просто о каких-либо бинарных данных можете себе представить, что не имеют понятия о "кодировке" на всех. Так что Base64 видит и действует на это просто bytestream. он не очень то, что уход внутрь. Так, для текстового сообщения: Код:
encoding Base64 Encoding
Text content ---> bytestream ---> Base64-encoded message
Base64 decoding Decoding
Base64-encoded message ---> bytestream ---> Text contentИными словами, вы должны вручную обрабатывать декодирования иметь Perl расшифровывать его как UTF-8 правильно. По умолчанию Perl обрабатывает все как ASCII, так что может объяснить, почему вы получите выход неправильно. Perl имеет специфические quirks в связи с Unicode. Это очень многое зависит от версии Perl Вы используете. Я имел достаточно тщательного расследования Perl Поддержка Unicode в 5,8 отрасли, но не уверены в том случае, если какие-либо изменения были осуществлены в 5.10. Если у вас есть Perl 5.6 или выше, шансы на Perl Unicode поддержка не является достаточной для обеспечения безопасности Unicode. Я не могу объяснить столько с так мало места здесь. Я рекомендую вам начать с perluniintro manpage для получения дополнительной информации: perluniintro - perldoc.perl.org Вам будет необходимо предоставить дополнительную информацию в том, что происходит в Perl стороны, если вы хотели бы заниматься этим в более конструктивном ключе. Последний раз редактировалось cbkihong; на 10-28-2008 10:48 PM.. Причина: опечатка |
|
|||
|
Хорошо, если вы чувствуете, что озадачен manpage (Вы, вероятно, будет!), Позвольте мне привести вам целый ряд примеров, чтобы дать вам общее представление о некоторых из наиболее важных вещей, вы должны знать. Как я китайская, я буду использовать китайский в примерах. Все коды в UTF-8. Ожидаемые среды: а UTF-8 терминала при надлежащем оказать шрифты Unicode текст. Тест 1 - Давайте начнем с этого Код:
my $str = "你好吗?";
print("$str\n");
printf("Length: %d\n", length($str));你好吗? Длина: 12 Это состоит из 4 китайских иероглифов, 3 байта каждый UTF-8. Так, потому что Perl не рассматривать его как UTF-8, а ASCII, длина возвращается 12. Терминал-прежнему делает струны правильно, потому что байтах возвращаются стенографическими на терминал и терминал пытается декодировать bytestream как UTF-8, я помню себя терминал правильно настроена на UTF-8 (но не Perl в данном случае)? Тест 2 - признать, UTF-8 символов, встроенные в исходном коде Код:
use utf8;
my $str = "你好吗?";
print("$str\n");
printf("Length: %d\n", length($str));Широкий характер в печатном виде на test.pl линии 6. 你好吗? Длина: 4 Perl Сейчас признается, струны в 4-символа UTF-8 строку, но предупреждение выдается Perl, Потому что выходной поток (STDOUT) не настроен принимать UTF-8 декодирован строк. Тест 3 - Поворот на UTF-8 на стандартном режиме потоки Код:
use utf8;
binmode(*STDOUT, ":utf8");
my $str = "你好吗?";
print("$str\n");
printf("Length: %d\n", length($str));Теперь предупреждение исчезнет. С точки зрения Perl, UTF-8 теперь корректно обрабатываются. Но как насчет струн возникла в другом месте (как в вашем случае), а не встроенных в исходном коде? Нам понадобится еще один способ. Тест 4 - Использование ручного декодирования Код:
use Encode;
binmode(*STDOUT, ":utf8");
my $str = "你好吗?";
$str = decode('utf8', $str);
print("$str\n");
printf("Length: %d\n", length($str));Тот же результат, как тест 3, однако декодирование руководства. Исходный код является ASCII-кодировке, и, следовательно, строка буквально Embedded, но руководство декодирования позволяет декодирование строки буквально на одном из Perl UTF-8 строки, так что длина () корректно сообщает длину потом. Эти примеры покрытия может составлять 80% от того, что вам нужно знать, чтобы Perl Процесс Unicode правильно в большинстве случаев. Что касается отдыха, то вам нужно проконсультироваться с manpage. |
| Рекламные ссылки |
|
|
![]() |
| Закладки |
| Теги |
| Perl, юникод |
| Резьба Инструменты | Искать в этом Thread |
| Режимы дисплея | Оценить эту ветку |
|
|
Подробнее UNIX и Linux Темы форума можно найти полезные
|
||||
| Нить | Резьба для начинающих | Форум | Ответы | Последнее сообщение |
| почему конвертировать 8 космических 1 табуляции на Unix? | Tlg13team | Shell программирование и сценарии | 6 | 08-20-2008 12:06 AM |
| Преобразование символов в слове на СЗГА?? | vadharah | Shell программирование и сценарии | 3 | 04-01-2008 08:44 AM |
| SED заменить строку с кодировкой | mg1 | UNIX для чайников Вопросы И Ответы | 5 | 01-10-2008 12:31 PM |
| преобразование специальных символов, как £ | cynnie | Shell программирование и сценарии | 1 | 08-08-2007 07:37 AM |
| UTF-8 кодировка строки и AWK | Алина | Shell программирование и сценарии | 2 | 07-16-2007 10:22 PM |