【问题标题】:Read Accented Characters from JSON or XML format in PHP在 PHP 中从 JSON 或 XML 格式读取重音字符
【发布时间】:2012-03-06 12:49:51
【问题描述】:

我有一个 XML 文件,其中包含像æøåêèé 这样的重音字符。如果我只是使用 fread 读取文件,我可以轻松读取这些字符,但如果我使用 simplexml_load_string 或 DOMDocument,我将无法读取这些字符。

我尝试使用 json_decode 的 JSON 文件也是如此

我尝试使用 mb_convert_encoding 并将更改字符更改为 Window-1252、UTF-8 和许多其他编码,但没有任何效果。 我正在使用 PHP 5.3.1。我希望有人帮助阅读此类字符的演示代码。 以下是我尝试过但没有成功的基本代码

XML 文件

    <?xml version="1.0" encoding="windows-1252"?>
    <note>
    <message>Norwegian: æøå. French: êèé</message>
    </note>

PHP 代码

   $myFile = "check.xml";
   $fh = fopen($myFile, 'r');
   $theData = fread($fh, filesize($myFile));
   fclose($fh);
   echo $theData."<br>";
   $xml = simplexml_load_string($theData);
   print_r(mb_convert_encoding($xml->message,'Windows-1252'));

【问题讨论】:

    标签: php xml json diacritics non-ascii-characters


    【解决方案1】:

    试试这个

    $fc = iconv('windows-1250', 'utf-8', file_get_contents(check.xml));
    $handle=fopen("abc.xml", "rw");
    fwrite($handle, $fc);
    fclose($handle);
    

    尝试使用上述方法编写的文件

    【讨论】:

    • 用这个写的文件不正确。首先,最重要的是,它破坏了重音字符挪威语:ćřĺ。法语:Ä™Äé 其次,编码不正确。原来的 XML 编码是 windows-1252 所以我在上面的方法中改变了编码,但是accnted 字符仍然被破坏了
    • @GunjanNigam:你确定“check.xml”文件是用“windows-1252”编码编写的吗?否则它将不起作用(或者您必须将 xml 的 encoding="windows-1252"-part 更改为文件的实际编码)。
    猜你喜欢
    • 2018-07-05
    • 2015-06-08
    • 2014-10-19
    • 1970-01-01
    • 2017-10-18
    • 1970-01-01
    • 2013-04-06
    • 1970-01-01
    • 2021-08-02
    相关资源
    最近更新 更多