我有一个Mysql数据库,其数据如下:
温度计-10℃-110℃
我从其他网站复制了学位符号。
我确实在html上声明了以下示例:
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
但是当我使用php调用此数据到我的网站时,它只会显示
Thermometer -10?C - 110?C
我还需要做什么?
答案 0 :(得分:2)
我听说单个 Unicode字符℃
(十六进制E28483
)正在变成两个 Unicode字符{{1} }(十六进制°C
)。让我们验证一下。如果编码为latin1,则后一个十六进制将为C2B0 43
。
如果字符在数据库中,则执行
B0 43
如果它们使用PHP,则可以
SELECT col, HEX(col) FROM ...
然后报告返回的十六进制数。
This讨论了为什么 two 字符版本可以变成echo bin2hex($str);
。它表明:
?C
是B0
的latin1编码。与此同时,MySQL或PHP中没有(我知道)将一字符编码转换为两字符版本的东西。还有其他流程吗?
在Unicode规范中,将1个字符的版本分解为2个字符的版本,但是我不知道哪种产品会使用这种形式。另一个示例:°
与Lj
谁在转化?
如果MySQL从utf8转换为latin1,我会期望的
Lj
返回两个字符的版本。但是,不,它返回CONVERT(CONVERT(BINARY('℃') USING utf8) USING latin1)
。我必须假设数据正在处理的其他过程足以将1个字符转换为2个字符,然后再转换为latin1(与cp1252和ISO-8859-1和ISO- 8859-15)