我的國際公司工作,因此,我們有語言負荷,以應付。 我遇到了一些特殊字符的問題。的SimpleXML和法國的字符
我創建了一個獨立的測試PHP頁面,以消除可能通過我的系統引入的任何其他問題。
從i通讀我發現的SimpleXML處理的XML爲UTF-8的各種頁面。 如:PHP SimpleXML Values returned have weird characters in place of hyphens and apostrophes
,所以我所做的僅僅是在頁面的頂部:
header("Content-type:text/html; charset=UTF-8");
然後我做了這個檢查:
print mb_internal_encoding();
不知道這是正確的功能,但它在FF和Chome給了我ISO-8859-1。
XML看起來是這樣的:
$xml = '<?xml version="1.0" encoding="ISO-8859-15"?>
<Tracking>
<File>
<FileNumber>çúé$`~ € Š š Ž ž Œ œ Ÿ</FileNumber>
<OrigBranch>124</OrigBranch>
<Login></Login>
</File>
</Tracking>';
這打印出所有的滑稽,但對於頁面,我需要,我不是太concrened它是如何在瀏覽器打印出的實際頁面實際上是從一個運行cron將XML導入到MYSQL數據庫中,所以不要太重要。它顯示在這樣FF雖然
print $xml;
���$`~ � � � � � � � � � 124
然後我創建的SimpleXML對象:
此打印出:
[File] => SimpleXMLElement Object
(
[FileNumber] => çúé$`~
[OrigBranch] => 124
[Login] => SimpleXMLElement Object
(
)
)
我不是太擔心了奇怪的字符打印$ xml ;,但更多需要修復插入到數據庫中的SimpleXMLElement對象中的字符。 爲什麼SimpleXMLElement對象失利後的「〜」字。我嘗試在頭函數調用中將字符集更改爲ISO-8859-15,但這隻會導致打印$ xml;稍顯好看,但仍然缺少後面的字符「〜」,但給的SimpleXMLElement致命錯誤:
'String could not be parsed as XML
我解析XML嘗試過:
$xml = mb_convert_encoding($xml, "ISO-8859-15");
$xml = iconv('UTF-8', 'ISO-8859-15//TRANSLIT', $xml)
但這些並沒有幫助。 有什麼建議嗎?
謝謝Stramaz。 我試過不同的組合。我沒有看到字符「ŠšžŒœŸ」,因爲我沒有看到它經常被使用,但是「€」是至關重要的。新的測試特殊字符的字符串: 提示$'〜€°的§çòòàù§ 頁面的charset = UTF-8 + XML編碼= 「UTF-8」 - >打印XML字符搞笑,SimpleXML的突破 頁面的charset = ISO-8859-1 + XML編碼=「UTF-8」 - >打印XML良好,SImpleXML中斷。這是令人驚訝的,因爲我認爲「€」只能從ISO-8859-15 頁charset = ISO-8859-1 + XML編碼=「ISO-8859-1」 - > xml好,SImpleXML有趣的字符 – Shaakir
...繼續 page charset = ISO-8859-15 + XML編碼=「ISO-8859-15」 - > xml good,SImpleXML有趣的字符 查看由此SImpleXML對象保存到數據庫的信息的頁面全部用字符集呈現= ISO-8859-15。所以對我來說重要的一部分是在SImpleXML對象中獲得正確的字符,並因此正確進入數據庫。 – Shaakir
我在我的答案中提出並更新,它應該可以幫助你。讓我知道 – Stramaz