2011-01-14 3 views
3

ли PHP иметь любую стандартную функцию() для преобразования строк Юникода в равнинных, хорошие старомодные строки ANSI (или любой другой формат РНР htmlentities понимаетPHP: Преобразование Unicode строк в ANSI строки

Есть ли? функция, которая преобразует строки UTF-8 в HTML, которые могут быть поняты самыми популярными браузерами?

+0

"ANSI strings"? http://www.joelonsoftware.com/articles/Unicode.html –

+0

Это не то, что мое программное обеспечение будет использоваться каким-то случайным парнем в Японии. Мы знаем наш рынок. – pyon

+1

Почему бы не просто сохранить все (веб-страницу, таблицы базы данных, соединение и сопоставление и т. Д.) В UTF-8? Даже если вы не воспользуетесь никакими символами, отличными от ASCII, вы, по крайней мере, будете иметь последовательный подход. –

ответ

7

Это не может работать должным образом. Сохранено в Юникоде больше символов, чем с ANSI. Итак, если вы «конвертируете» в ANSI, вы потеряете много каракулей.

http://php.net/manual/en/function.htmlentities.php

Вы можете использовать Unicode (UTF-8) кодировку с htmlentities:

string htmlentities (string $string [, int $flags = ENT_COMPAT [, string $charset [, bool $double_encode = true ]]])

htmlentities($myString, ENT_COMPAT, "UTF-8"); должен работать.

+0

Ничего себе. Я не знал, что это возможно. Я думал, что «htmlentities» принимает только один параметр. – pyon

+0

+1 Здравый подход. :-) –

+0

Есть ли какая-либо функция, которая преобразует ''' в' & aacute', например? – pyon

5

Хотя я бы действительно рекомендуют держать все в UTF-8 (в соответствии с моим комментарием по этому вопросу), вы можете использовать функцию mb_convert_encoding преобразовать любую известную строку UTF-8 в US-ASCII, как, например:

$asciiString = mb_convert_encoding ($sourceString, 'US-ASCII', 'UTF-8'); 

Однако это может быть не преобразование без потерь в зависимости от исходной символьной строки. (Символы, такие как «é», просто исчезнут в пустоте.)

1

Браузеры уже понимают UTF-8. Если вы хотите, чтобы они знали, что вы отправляете им UTF-8, то вам нужно tell them.

+0

Означает ли IE6 UTF-8? Некоторые из зрителей моего веб-сайта могут использовать его. – pyon

+0

Да, да. Однако он не обнаруживает автоматическое обнаружение UTF-8, поэтому обязательно указывайте «Content-Type» соответствующим образом. – dan04

Смежные вопросы