正如标题中的问题所述。 我似乎找不到以下任何一个答案: php标头,css标头,html标头,mysql字符集(到utf8_general_ci)或
<form acceptcharset="utf-8"... >
真的难倒这个。
我基本上都在经历这个过程:
在第3步,我检查代码,看它是字面上显示日文字符。 因为它正在这样做,我猜它导致了我得到的PHP错误(对于英文字符而言,正常工作的函数不能正常工作)。
所以我想用UTF-8格式编码,但我不知道该怎么做?
编辑:这是我在日文文本中使用的PHP函数
function short_text_jap($text, $length=300) {
if (strlen($text) > $length) {
$pattern = '/^(.{0,'.$length.'}\\b).*$/s';
$text = preg_replace($pattern, "$1...", $text);
}
return $text;
但不是缩短文本量,而是返回整个事物。
答案 0 :(得分:4)
由于您似乎想将UTF-8编码的字符串转换为ASCII和非ASCII字符转换为字符引用,您可以使用PHP’s multi-byte string functions来执行此操作:
mb_substitute_character('entity');
$str = '日本語'; // UTF-8 encoded string
echo mb_convert_encoding($str, 'US-ASCII', 'UTF-8');
输出结果为:
日本語
答案 1 :(得分:1)
对UTF8 的看法有点混淆:将目标定为获得字面日文字符的“UTF8版本”。
日
之类的东西是与ASCII兼容的HTML实体(基本上是Unicode引用)已经在某些编码中表示,而UTF8是一种多字节编码方案,用于定义字符在字节级别上的存储方式。
我建议依赖字面形式,因为这样可以更容易管理国际字母表。
只需在任何地方迁移到UTF8:数据库,HTML,PHP和文件类型。然后就可以使用旨在处理多字节字符的PHP Multibyte String扩展名:
mb_internal_encoding("UTF-8");
function short_text_jap($text, $length=300) {
return mb_strlen($text) > $length ? mb_substr($text, 0, $length) : $text;
}
echo short_text_jap('日本語', 2); // outputs 日本