【发布时间】:2012-07-22 05:37:15
【问题描述】:
我在字符编码方面没有遇到什么问题。
情况
上传的文件已转换为 XML。此文件的字符编码各不相同,但可能会出现智能引号、实体和各种 ASCII。一旦该文件被转换为 XML,它就会存储在数据库中。根据用户请求,可以从数据库中提取 XML 并将其转换为数组,然后将其创建为 PDF。
问题
字符编码。从一开始,字符编码就扮演了一个主要问题。我想知道;
- 什么字符编码通常涵盖整个“频谱”。例如,解析 XML 时无法识别的
°或智能引号 (’)。智能报价会变成’等。 - 如何在数据库中存储 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');
}
最终,我的问题在于我不知道上传文件的编码。我有一个switch 的想法,它试图将字符转换为更数据库和“PDF 友好”的东西。然而,大量的谷歌搜索导致了str_replace 一件事对另一件事的苦苦工作或数组。这真的是解决方案吗?
任何建议、解决方案或指向更好方向的指点都是有帮助的,非常感谢。谢谢。
【问题讨论】:
-
你好,朋友,我有类似的问题,你有没有遇到过这个问题?
标签: php mysql xml character-encoding