无法解码某些特殊字符
Trouble decoding some special characters ’ “ ”
我正在尝试解码 php 中的一些特殊字符,但似乎找不到方法。
$str = 'Thi’s i"s a’n e”xa“mple';
这只是 return 一些点。
$str = preg_replace_callback("/(&#[0-9]+;)/", function($m) {
return mb_convert_encoding($m[1], "UTF-8", "HTML-ENTITIES");
}, $str);
其他一些测试只是 return 相同的字符串。
$str = html_entity_decode($str, ENT_QUOTES, 'UTF-8');
$str = htmlspecialchars_decode($str, ENT_QUOTES);
无论如何,我一直在尝试各种组合,但真的不知道如何将其转换为 UTF-8 字符。
我期待看到的是:
Thi’s i"s a’n e”xa“mple
实际上,如果我直接使用它并使用 htmlentities
对其进行编码,我会看到不同的字符开头。
Thi’s i"s a’n e”xa“mple
不幸的是,我无法控制源代码,我只能处理这些字符。
它们是非标准的吗,我需要用我自己的查找手动替换它们吗table?
编辑
看这里 table:https://brajeshwar.github.io/entities/
我看到我关注的角色没有列出。当我测试这个 table 中的几个字符时,它们解码得很好。我猜 php 中的列表默认不完整?
如果您检查所指字符的 unicode 标准:http://www.unicode.org/charts/PDF/U0080.pdf
您会看到字符串中的所有代码点都没有可表示的字形,而是控制字符。
这意味着它们应该被呈现为空方块(或点,取决于您的渲染器如何处理它们)。
如果它适用于某个地方的某人 - 这是一种非标准行为,不能依赖它,因为它是非标准的。
显然您的文本具有 cp1250 的初始编码,因此您应该相应地处理它,或者手动重新编码实体:
$str = 'Thi’s i"s a’n e”xa“mple';
$str = preg_replace_callback("/&#([0-9]+);/u", function($m) {
return iconv('cp1250', 'utf-8', chr($m[1]));
}, $str);
echo $str;
我正在尝试解码 php 中的一些特殊字符,但似乎找不到方法。
$str = 'Thi’s i"s a’n e”xa“mple';
这只是 return 一些点。
$str = preg_replace_callback("/(&#[0-9]+;)/", function($m) {
return mb_convert_encoding($m[1], "UTF-8", "HTML-ENTITIES");
}, $str);
其他一些测试只是 return 相同的字符串。
$str = html_entity_decode($str, ENT_QUOTES, 'UTF-8');
$str = htmlspecialchars_decode($str, ENT_QUOTES);
无论如何,我一直在尝试各种组合,但真的不知道如何将其转换为 UTF-8 字符。
我期待看到的是:
Thi’s i"s a’n e”xa“mple
实际上,如果我直接使用它并使用 htmlentities
对其进行编码,我会看到不同的字符开头。
Thi’s i"s a’n e”xa“mple
不幸的是,我无法控制源代码,我只能处理这些字符。
它们是非标准的吗,我需要用我自己的查找手动替换它们吗table?
编辑
看这里 table:https://brajeshwar.github.io/entities/
我看到我关注的角色没有列出。当我测试这个 table 中的几个字符时,它们解码得很好。我猜 php 中的列表默认不完整?
如果您检查所指字符的 unicode 标准:http://www.unicode.org/charts/PDF/U0080.pdf
您会看到字符串中的所有代码点都没有可表示的字形,而是控制字符。
这意味着它们应该被呈现为空方块(或点,取决于您的渲染器如何处理它们)。
如果它适用于某个地方的某人 - 这是一种非标准行为,不能依赖它,因为它是非标准的。
显然您的文本具有 cp1250 的初始编码,因此您应该相应地处理它,或者手动重新编码实体:
$str = 'Thi’s i"s a’n e”xa“mple';
$str = preg_replace_callback("/&#([0-9]+);/u", function($m) {
return iconv('cp1250', 'utf-8', chr($m[1]));
}, $str);
echo $str;