|
|
|
| есть база данных с полями на иврите, в них текст примерно такой
"מ ;ו ;צ ;ל ;ח ;ת"
|
специально сделал пробел между числом и точкой с запятой.
пытаюсь вывести таблицу в ХМЛ а получается, что после
$productdetails=$doc->createElement("DETAILS");
$product=$doc->appendChild($productdetails);
$text = $doc->createTextNode($arr[descr]);
$productdetails->appendChild($text);
|
в теге "DETAILS" текст отображаеться как есть (цифрами и тд.), если открываю исходный код страницы то вижу, что все & заменены на &
как это исправить? | |
|
|
|
|
|
|
|
для: dima_mak
(26.07.2009 в 13:09)
| | Как запретить appendChild'у это я не знаю, пончиков больше нет гг Зато советую переходить на UTF-8
Я тебе даже код дам, ибо unicode2utf8 писал не я гг
function unicode2utf8($c)
{
if($c < 0x80)
{
return chr($c);
}
else if($c < 0x800)
{
return chr( 0xc0 | ($c >> 6) ) . chr( 0x80 | ($c & 0x3f) );
}
else if($c < 0x10000)
{
return chr( 0xe0 | ($c >> 12) ) . chr( 0x80 | (($c >> 6) & 0x3f) ) . chr( 0x80 | ($c & 0x3f) );
}
else if($c < 0x200000)
{
return chr(0xf0 | ($c >> 18)) . chr(0x80 | (($c >> 12) & 0x3f)) . chr(0x80 | (($c >> 6) & 0x3f)) . chr(0x80 | ($c & 0x3f));
}
return false;
}
$s = 'מוצלחת';
$s = preg_replace('/&#(\\d+);/e', 'unicode2utf8("\\1")', $s);
echo $s;
|
Интересно, а сайты на иврите могут отображаться только после полной загрузки страницы? У них же всё наоборот гг гг | |
|
|
|
|
|
|
|
для: Жмурик
(26.07.2009 в 15:28)
| | а дальше?
где f8|3 80|3f 80|3f 80|3f 80|3f ?
где fc|1 80|3f 80|3f 80|3f 80|3f 80|3f ?
где fe|0 80|03 80|3f 80|3f 80|3f 80|3f 80|3f ?
Коль делать, так по-большому. | |
|
|
|
|
|
|
|
для: Trianon
(26.07.2009 в 15:38)
| | Я тут не совсем ориентируюсь, ибо, говорю, код не мой, но эти символы разве определены? Вот цитата из педивикии:
Хотя формы записи UTF-8 и UTF-32 позволяют кодировать до 231 (2 147 483 648) кодовых позиций, было принято решение использовать лишь 1 112 064 для совместимости с UTF-16. Впрочем, даже и этого более чем достаточно — сегодня (в версии 5.1) используется немногим более 100 000 кодовых позиций.
Этот код вроде предусматривает конверт 2 097 152 символов, что даже больше того, что предусмотрено. | |
|
|
|
|
|
|
|
для: Жмурик
(26.07.2009 в 15:47)
| | Ну в этом плане педивикия не врет.
Но если на нее ссылаться, надо быть готовым защищать право на существование дерьма под названием utf-16.
Я имею в виду - защищать чем-то большим, чем ссылкой на то, что это любимая кодировка windows. | |
|
|
|
|
|
|
|
для: Trianon
(26.07.2009 в 15:49)
| | Да, дописать F8, FC можно. А FE разве можно? В UTF-8 даже теоретически нет 1111111x ...
Максимально возможный по длине символ (6 байт) там опеределяется так
1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
|
| |
|
|
|
|
|
|
|
для: Жмурик
(26.07.2009 в 16:08)
| | Ну а где нарушается алгоритм распознования-то?
Т.е. что мешает распознать
11111110 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
|
или ограничившись 32 актуальными разрядами -
11111110 100000xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
|
?
Сравнение тоже вроде не вызывает проблем. | |
|
|
|
|
|
|
|
для: Trianon
(26.07.2009 в 16:12)
| | Алгоритм нигде не нарушается. Если хочется, то да, можно дописать.
[поправлено модератором] | |
|
|
|