2011-06-16 10 views
0

我完全失去了編碼問題,我不知道發生了什麼事情,究竟是什麼問題,以及如何解決這個問題。爲什麼在寫入屏幕時出現`á`而不是空格(編碼問題)?

基本上我只是想從Zip文件讀取HTML文件,解析它然後輸出到XML。現在,我從解析器中獲得的文本發生了一些奇怪的事情。

解析HTML而不是空格時,只有在寫入屏幕時纔會得到á。如果我將它保存在一個變量中並寫入文件,它在文件中看起來很好。然而,儘管它在XML中看起來正確,但它有些問題,我的PHP解析器無法解析XML,IE似乎也不喜歡它。

我不得不第一次mb_convert_encoding($xmlcontent, "ASCII");所以我可以用PHP解析XML。

任何想法我的問題是什麼?從.tar.gz文件使用Perl

my $tar = Archive::Tar->new; 
$tar->read("myfile.tar.gz"); 
$tar->extract_file('index.html', 'output.html'); 
  • 加載HTML

    1. 提取HTML,這是它開始變得時髦,我得到的輸出喜歡Numberáofásourceálines

      my $tree = HTML::TreeBuilder->new; 
      $tree->parse_file('output.html') or die $!; 
      $tree->elementify; 
      
    2. 寫XML

      my $output = new IO::File(">output.xml"); 
      my $writer = new XML::Writer(OUTPUT => $output, DATA_MODE => 1,DATA_INDENT => 2); 
      
  • +3

    是你的數據多字節unicode?奇怪的人物聞起來可能會像這樣。使用適當的字符編碼。 – Rasika 2011-06-16 23:53:30

    +2

    您首先需要了解輸入數據的編碼。然後將其轉換爲UTF-8。 – hakre 2011-06-17 00:26:38

    +0

    我如何確定編碼?該文件是從一個工具自動生成的,我無法控制它我只能處理它 – user391986 2011-06-17 00:44:58

    回答

    0

    我想我只是通過在解析它之前在html上處理它來解決它,謝謝所有偉大的指針!

    s/\&nbsp\;/ /g; 
    
    1

    如果將它寫入文件時看起來正確,而將其寫入終端時出錯,則聽起來就像您的終端期望編碼錯誤。檢查你的終端設置。'

    另外,請參閱Jon Rockway對"Why does modern Perl avoid UTF-8 by default?"的回答。使用編碼,您必須將輸入轉換爲正確的編碼,並將輸出轉換爲正確的編碼。查看數據的所有內容都需要知道您正在使用哪種編碼。

    相關問題