繁体   English   中英

将具有UTF-16和UTF-8文本的字符串转换为UTF-8

[英]convert string with UTF-16 and UTF-8 text to UTF-8

我读了很多关于如何将UTF-16从/转换为UTF-8的帖子,但是如果我两者兼有,则没有人建议怎么办。 我正在尝试使用PHP将包含UTF-16和UTF-8字符的电子邮件正文文本插入SQL Server 2008表列(UTF-8)。

我使用iconv()从UTF-16转换为UTF-8,但是正如我所说,这还不够,因为它不能处理UTF-8:

$email->description_html = iconv("UTF-16","UTF-8//TRANSLIT",$that->getMessageText(
                                 $msgNo, 'HTML', $structure, $fullHeader,$clean_email)); 
$email->description      = iconv("UTF-16","UTF-8//TRANSLIT",$that->getMessageText(
                                 $msgNo, 'PLAIN', $structure, $fullHeader,$clean_email));

我为UTF-16和UTF-8都尝试了此操作,但是它不起作用,并给出了数据库错误:

can't convert UTF-16 to UTF-8

$email->description_html= iconv('','UTF-8',$that->getMessageText(
                                $msgNo, 'HTML', $structure, $fullHeader,$clean_email));

我不知道该怎么办,请帮忙。

一个文本字符串中不应包含“同时具有UTF-16和UTF-8”这样的东西。 在这种情况下,字符串将被打断。 必须有一个指示符,说明使用了哪种编码,并且仅指示该编码。 必须信任此指示符才能将字符转换为另一种编码。 如果它不起作用:责怪来源错误地指出了不正确的编码。

至于电子邮件:可能有一个包含两部分(阅读:多个)的不同部分的邮件,其中包含两个不同的多部分标头,它们两个都说明了不同的编码。 必须通过应用解析多部分邮件的规则来处理此问题,即,您不能将整个邮件视为单个字符串,而必须首先将这些部分分开-然后,每个部分都有一个完全有效的单一编码用例。 :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM