我已将html元标记设置为uft8 也是utf8的形式charset 要确保我已经在有问题的字符串上运行了php函数utf8_encode()
即使在所有这些之后我通过php函数pg_query执行查询时出现postgres错误。
然而,当我将查询复制并粘贴到命令行时,它执行得很好。
查询(或至少是违规部分): 插入INTO位置 (... alt_thorfare_name ...)VALUES(...'BÓTHARGHLEANN/SHEÁIN'...);
错误: 查询失败:错误:编码UTF8的无效字节序列:0xd354 提示:如果字节序列与服务器期望的编码不匹配,也会发生此错误,该编码由client_encoding控制
问题是O和A上的fada(来自爱尔兰语的强烈口音)。
即使尝试寻找解决方案,我仍然完全坚持下一步该做什么。 任何帮助表示赞赏
答案 0 :(得分:2)
发生该错误是因为您实际上没有将UTF-8数据传递给pg_query
。
0xd354实际上不是有效的UTF-8序列,它是“ÓT”的ISO-8859-1序列。参见:
header("Content-type: text/plain");
$s = "ÓT";
$utf8 = mb_convert_encoding($s, "UTF-8", "HTML-ENTITIES");
$u = unpack("H*", $utf8);
echo "UTF-8 byte sequence: " . reset($u),"\n";
$iso8859 = mb_convert_encoding($s, "ISO-8859-1", "HTML-ENTITIES");
$u = unpack("H*", $iso8859);
echo "ISO-8859-1 byte sequence: " . reset($u),"\n";
给出
UTF-8 byte sequence: c39354 ISO-8859-1 byte sequence: d354
这样做:
utf8_encode()
。答案 1 :(得分:1)
要确保我已经运行了php 函数utf8_encode()就行了 违规的字符串
这是出错的地方,你不必将utf8编码为utf8,它已经是utf8了。