【发布时间】:2023-03-04 19:19:01
【问题描述】:
我正在使用 php 将电子邮件内容文本作为 UTF-8 字符串插入到 SQL Server 2008 数据库表中,除了一封特定的电子邮件外,它工作正常。
INSERT 命令失败并出现以下错误:
将查询字符串转换为 UTF-16 时出错:目标多字节代码页中不存在 Unicode 字符的映射。
导致它的文本是电话号码的扩展文本:
这个“xF7”应该是+91-98XXXXXXX(我加了XX)一定变成了UTF-16什么的?
在插入数据库之前,我使用 mb_detect_encoding 进行了 UTF-8 检查:
$HTMLencode = mb_detect_encoding(HTMLString, mb_detect_order(), true);
$PLAINencode = mb_detect_encoding(PLAINString, mb_detect_order(), true);
如您所见,我什至考虑了“多部分电子邮件”——HTML 的一部分和纯文本的一部分。 两项检查都返回 UTF-8 (这意味着“xF7”愚弄了我.. :))
我还使用 UTF-8//IGNORE 做了 iconv() 以忽略无效字符, 没有任何帮助,我该如何在 php 中解决这个问题?
上述代码适用于 99% 的电子邮件,除了一封引发此错误的特殊电子邮件。
【问题讨论】:
标签: php sql-server-2008 encoding utf-8