nde*_*ung 7 php xml mysql character-encoding
我在使用字符编码方面遇到了一些麻烦.
情况
上载的文件将转换为XML.此文件的字符编码会有所不同,但可能会出现智能引号,实体和各种ASCII.将此文件转换为XML后,它将存储在数据库中.根据用户请求,可以从数据库中提取XML并将其转换为数组,然后将其创建为PDF.
问题
字符编码.从一开始,字符编码就出现了一个重大问题.我想知道;
°在解析XML或智能引用(’)时无法识别的.智能报价将变成’等等.Å在前面填充.试图解决这个问题
我已经做了各种"尝试"解决我的问题的功能 - 将一些角色转换成另一个角色.但是,我认为这是完全错误的做法,我应该改变字符编码.
/*
* Converts smart quotes to ascii
*/
function convert_smart_quotes($string) {
$string = iconv("UTF-8", "UTF-32", $string);
$string = mb_convert_encoding($string, 'HTML-ENTITIES', 'UTF-32');
$string = str_replace('', '', $string);
$search = array('‘', '’', '“', '”', '—');
$replace= array("'", "'", '"', '"', '-');
$string = str_replace($search, $replace, $string);
return $string;
}
/*
* Converts some entities to an ISO format?
*
* Example : ° => °
*/
function entity_to_iso($string) {
return html_entity_decode($string, ENT_QUOTES & ~ENT_COMPAT, 'ISO-8859-1');
}
Run Code Online (Sandbox Code Playgroud)
最终,我的问题在于我不知道上传文件的编码.我有一个想法switch,试图将字符转换为更多的数据库和"PDF友好".然而,很多谷歌搜索引起了苦涩的工作或阵列,str_replace这是另一回事.这真的是解决方案吗?
任何建议,解决方案或手指指向更好的方向都是有帮助的,非常感谢.谢谢.
检测文件的编码是一个难题,UTF很容易,因为它开头有BOM,但否则几乎不可能正确确定编码类型。
然而,如果 XML 格式正确,它应该嵌入编码,并且解析器应该很好地处理它。我看到您正在进行从 UTF-8 到 UTF-32 的转换,这根本没有帮助,因为它只会使字符串变大一点,但它不会更改用于对字符进行编码的代码点。
因此,您应该能够向 XML 解析器询问文件的编码,然后在存储和/或处理之前将其从编码更改为 UTF-8(或 32)。
| 归档时间: |
|
| 查看次数: |
220 次 |
| 最近记录: |