|
 8 байт |
|
| Прикреплённый файл находится в кодировке GB2312 и имеет структуру: верх, чёрточка, низ. После конвертирования в UTF низ и сама чёрточка исчезают. От верха и низа это не зависит.
Вот скрипт:
<?php
$html = file_get_contents("1.txt");
echo $html;
$html = iconv("GB2312","utf-8",$html);
echo "\n\n".$html;
?>
|
Что это за фокус? Если в браузере или текстовом редакторе менять кодировку, то всё нормально - текст искажается (или конвертируется), но никуда не исчезает.
Получается это php обрезает текст? | |
|
|
|
|
|
|
|
для: Qiao
(13.07.2009 в 13:55)
| | $html = "\x78\x0D\x0A\xA8\x44\x0D\x0A\x78";
Вообще-то там нотайс вылезает при конвертировании.
Notice: iconv() [function.iconv]: Detected an illegal character in input string in Z:\home\localhost\www\Tests\tmp\temp2.php on line 4
по-моему iconv Вам не требуется.
Кроме того GB2312 - китайская кодировка,
наивно ожидать что соответствующая шрифтовая поддержка установлена на компьютерах форумчан. | |
|
|
|
|
|
|
|
для: Trianon
(13.07.2009 в 14:08)
| | Странно, у меня нотайс не вылазет.
Не понял что вы имеете ввиду "iconv Вам не требуется"?
В том-то и дело, что нужно (можно, кончено руками, но так неинтересно). Я конвертил и вдруг пошли сбои.
То есть проблема в этой чёрточке (как и ожидалось). А что в ней такого, и главное, есть ли способ как-то её обойти?
Если я захочу её удалить, например регулярными, то мне специально для этого нужно файл с этой регуляркой в GB2312 держать? Можно её как-нибуль из под UTF удалить? | |
|
|
|
|
|
|
|
для: Qiao
(13.07.2009 в 14:32)
| | >Странно, у меня нотайс не вылазет.
Так наверное у Вас он пропросту заблокирован.
>Не понял что вы имеете ввиду "iconv Вам не требуется"?
>В том-то и дело, что нужно (можно, кончено руками, но так неинтересно). Я конвертил и вдруг пошли сбои.
>То есть проблема в этой чёрточке (как и ожидалось). А что в ней такого, и главное, есть ли способ как-то её обойти?
Вы юникодовский номер этого символа назвать можете?
А то я, к примеру, не понимаю, о какой черточке речь идет.
>Можно её как-нибуль из под UTF удалить?
А почему нет, собственно?
preg_replace работает с utf8 | |
|
|
|
|
|
|
|
для: Qiao
(13.07.2009 в 14:32)
| | string iconv ( string $in_charset, string $out_charset, string $str )
Если добавить //TRANSLIT к параметру out_charset будет включена транслитеризация. Это означает, что вслучае, когда символа нет в конечной кодировке, он заменяется одним или несколькими аналогами. Если добавить //IGNORE, то символы, которых нет в конечной кодировке, будут опущены. Иначе, будет возвращена строка str, обрезанная до первого недопустимого символа.
PS. Если у пользователя не установлены шрифты упрощенного и традиционного китайского письма, ничего не получится, он все равно не увидит желаемого. | |
|
|
|
|
|
|
|
для: sim5
(13.07.2009 в 14:42)
| | >Вы юникодовский номер этого символа назвать можете?
Не могу, так как она к юникоду просто не конвертится.
На вид обычное широкое тире: "―".
//IGNORE помог, спасибо. Ответ заключался в rtfm. | |
|
|
|
|
|
|
|
для: Qiao
(13.07.2009 в 15:04)
| | ftp://ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP936.TXT
0xA844 0x2015 #HORIZONTAL BAR | |
|
|
|
|
|
|
|
для: Trianon
(13.07.2009 в 16:26)
| | При чём тут MICSFT? Это что - проприетарный знак? | |
|
|
|
|
|
|
|
для: Qiao
(13.07.2009 в 18:04)
| | Можете найти определение этого Вашего A8 44 почище - вперед.
Я нашел хотя бы такое. | |
|
|
|