2011-01-14 129 views
3

PHP是否有什么标准功能(S)为Unicode字符串转换为普通的,老式的ANSI字符串(或任何格式PHP的htmlentities理解PHP:转换Unicode字符串到ANSI字符串

有什么?函数可以将UTF-8字符串转换为HTML,这可以被最流行的浏览器理解吗?

+0

“ANSI字符串”? http://www.joelonsoftware.com/articles/Unicode.html – 2011-01-14 13:25:26

+0

这不像我的软件会被日本的一些随机人使用。我们了解我们的市场。 – pyon 2011-01-14 13:27:45

+1

为什么不用UTF-8保存所有内容(网页,数据库表,连接和排序规则等)?即使您没有利用任何非ASCII字符,您至少也会采用一致的方法。 – 2011-01-14 13:33:03

回答

7

这不能正常工作。用Unicode存储的字符数比ANSI字符数多 所以如果你“转换”为ANSI,你会失去大量的字符。

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

您可以使用ヶ辆的Unicode(UTF-8)字符集:

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

htmlentities($myString, ENT_COMPAT, "UTF-8");应该工作。

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