基本上我有这个字符串:
Český, Deutsch, English (US), Español (ES), Français (France), Italiano, 日本語, 한국어, Polski, 中文(繁體)
我想将其转换为所有可能的 HTML 实体(也可能有俄语字符!我尝试使用不同的字符集制作不同的"htmlspecialchars"和"htmlentities"函数,但它返回空字符串......
$l = htmlentities("Český, Deutsch, English (US), Español (ES), Français (France), Italiano, 日本語, 한국어, Polski, 中文(繁體) €", ENT_COMPAT, "BIG5-HKSCS");
$l = htmlentities($l, ENT_COMPAT, "KOI8-R");
$l = htmlentities($l, ENT_COMPAT, "EUC-JP");
$l = htmlentities($l, ENT_COMPAT, "Shift_JIS");
$l = htmlentities($l, ENT_COMPAT, "Shift_JIS");
echo $l;
返回一个空字符串。
有什么帮助吗?
这是我
的"unutf8"函数,它将所有UTF8字符转换为表单的HTML实体〹
function unutf8($str) {
return preg_replace_callback("(['xC0-'xDF]['x80-'xBF]|['xE0-'xEF]['x80-'xBF]{2}|['xF0-'xF7]['x80-'xBF]{3}|['xF8-'xFB]['x80-'xBF]{4}|['xFC-'xFD]['x80-'xBF]{5})",
function($m) {
$c = $m[0];
$out = bindec(ltrim(decbin(ord($c[0])),"1"));
$l = strlen($c);
for( $i=1; $i<$l; $i++) {
$out = ($out<<6) | bindec(ltrim(decbin(ord($c[$i])),"1"));
}
if( $out < 256) return chr($out);
return "&#".$out.";";
},$str);
}
它分析字符串中的有效 UTF8 字符序列,并将多字节序列转换为字符的序号值。这非常混乱,我不希望通过这个获得任何良好的编码奖项,但它有效。
但是请注意,如果您有未编码的字符,那么您会遇到问题。例如,如果由于某种原因你有 é©©,那么结果将是驩。在将字符串传递给函数之前,请确保您的字符串是有效的 UTF8。
使用标头将 HTTP 标头修改为 utf-8:
header('Content-Type: text/html; charset=utf-8');
另外,请确保您的 HTML 文档也是 utf-8:
<meta http-equiv="Content-type" content="text/html" charset="utf-8" />
不要寻求强硬的解决方案,只需遵循以下小而简单的步骤:1) mysql_set_charset("UTF8", $conn);使用您的配置连接代码进行设置。
或
2) mysql_query("设置名称'UTF8'");在此处输入您的查询...mysql_set_charset("UTF8", queryResult);