如何在XML读取和PHP写入到mysql时转换德语字符?

如何在XML读取和PHP写入到mysql时转换德语字符?,php,mysql,character-encoding,Php,Mysql,Character Encoding,早上好 我正在将XML文件中的数据输入我的数据库,但有任何带有德语单词的isse(错误地在XML中) 例如,单词für在我的XML中显示为für,因此在我的数据库中显示相同 我知道我可以对这个确切的短语进行简单的搜索/替换,但我想知道是否有更聪明的方法,因为我无法预测是否有一天其他德语单词会出现在XML中 添加更多细节 XML来源说: <?xml version="1.0" encoding="UTF-8" ?> 在我的PHP中,我有 $domString= utf8_编码

早上好

我正在将XML文件中的数据输入我的数据库,但有任何带有德语单词的isse(错误地在XML中)

例如,单词für在我的XML中显示为für,因此在我的数据库中显示相同

我知道我可以对这个确切的短语进行简单的搜索/替换,但我想知道是否有更聪明的方法,因为我无法预测是否有一天其他德语单词会出现在XML中

添加更多细节

XML来源说:

<?xml version="1.0" encoding="UTF-8" ?> 

在我的PHP中,我有

$domString= utf8_编码($dom->saveXML($element))

如果我在开始阅读XML文件之前查看它,它已经-

 <title> - <![CDATA[ CoPilot Live v8 Europa für Android 8.0.0.644 ]]> </title> 
-
谢谢


格雷格

在任何地方都使用相同的编码,不会出现这样的问题。如果你必须选择一种编码:使用UTF-8


如果无法更改它(为什么…),则必须使用以获得正确的值。

例如,当UTF-8数据被取消编码为ISO-8859-1时,通常会发生这种情况。在UTF-8中,德语umlautü由两个字节表示,在ISO-8859-1中,它是一个字节。这两个字节逐个解码,得到一个Ã和一个¼。你的任务是:

  • 读取XML的字节
  • 使用UTF-8解码它们
检查字节值

然而,总而言之,解决这个问题的想法是相当糟糕的。你最终猜测编码,而不是说错误的编码/解码字符被再次编码/解码。。。祝你好运

编辑:


同时,我使用了一个用于猜测字符编码的库,它似乎工作得很好。也许您可以试试。

不要忘记,如果您使用的是DOMDocument,那么无论脚本采用何种编码,它都会在内部将所有内容转换为UTF8

另外,如果您使用的是htmlentities,除非您明确告诉它,否则默认情况下它将使用ISO-8859-1编码。我花了一段时间才弄明白


有用的评论,也是从德语的角度来看。

对于某些事情,utf8\u解码是可行的。
您可能还想看看他的函数:

XML文件的编码是什么?您是自己生成的吗?我想您使用了错误的编码来读取xml,听起来源编码是UTF-8,您正在阅读iso-8859-1或类似的东西。我认为两者都是UTF-8,我已经在我最初的问题中添加了一些细节。这部分是正确的,但不是发生这种情况的原因。如果无法更改编码,则必须深入挖掘一点:)我相信我在任何地方都在使用UTF-8,我已经在我的问题中添加了更多细节。。。