PHP編碼big5 與 utf8

edited 十月 2013 in PHP新手區
我上網找了很多資料
總算把我的php編碼搞定
包括mysql & apache 都依照網路上的設定了

一般網頁上的中文也可以正常顯示了
可是今天我寫了下面的程式碼
<?PHP
$output =`dir /w`
echo "<pre>$output</pre>"
?>
正常會顯示我目錄下的所有檔案
但是我秀出來的 如果有中文 會有亂碼

當我改成big5
就可以正常顯示 但是原本的網頁就會亂碼了

請問這一部份我該怎麼設定呢?

原始討論: http://twpug.net/x/modules/newbb/viewtopic.php?topic_id=4290

評論

  • edited 七月 2009
    不預設編碼
    由html的header處理
  • edited 七月 2009
    我的PHP碼如上
    如果用utf8編碼

    會出現這樣畫面
    中文

    �Ϻа� C �����ϺЬO os
    �ϺаϧǸ�: C414-1342

    C:\AppServ\www ���ؿ�

    [.] [..] [appserv] [cgi-bin]
    counter.txt demo0401.php demo0403.php index.php
    index_.php index_backup.php [nbproject] phpinfo.php
    [phpMyAdmin]
    7 ���ɮ� 6,044 �줸��
    6 �ӥؿ� 101,574,496,256 �줸�եi��
    如果用BIG5編碼

    會出現這樣畫面
    銝剜�

    磁碟區 C 中的磁碟是 os
    磁碟區序號: C414-1342

    C:\AppServ\www 的目錄

    [.] [..] [appserv] [cgi-bin]
    counter.txt demo0401.php demo0403.php index.php
    index_.php index_backup.php [nbproject] phpinfo.php
    [phpMyAdmin]
    7 個檔案 6,044 位元組
    6 個目錄 101,574,496,256 位元組可用

    我想要都使用utf8的編碼
    免的遇到"許、功、蓋"等字出現問題

    但是執行運算元的秀出來的中文似乎是big5,所以都會出現亂碼

    請問我該如何決解
  • edited 七月 2009
    設定header 似乎沒有用
  • edited 七月 2009
    header怎下?
    AddDefaultCharset的設定是什麼?
    default_charset的設定又是什麼?
  • edited 七月 2009
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">;
    <html xmlns="http://www.w3.org/1999/xhtml">;
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    </head>
    <body>
    <?php
    echo "功";
    $txt=`dir /w`;
    echo $txt;

    ?>
    </body>
    </html>
  • edited 七月 2009
    我是如上設定的 不知是否有誤
  • edited 七月 2009
    AddDefaultCharset跟default_charset呢?
  • edited 七月 2009
    sam02282大另外問你apache跟php的字元設定是什麼
  • edited 七月 2009
    我只給關鍵字就是希望能自己去google
    '問'是解決方法的一種方法
    但是'找'卻是解決方法裡更好的一種
  • edited 七月 2009
    比較簡單的方法就是用iconv轉碼
    <?php 
    echo "功";
    $txt=`dir /w`;
    echo iconv('big5','UTF-8',$txt);
    ?>
    
    如果這個方法你不行,問題就會出在環境設定上
    至少在我的環境下,是正常的
  • edited 七月 2009
    AddDefaultCharset utf-8
    ;default_charset = "iso-8859-1"

    AddDefaultCharset utf-8
    default_charset = "iso-8859-1"
    結果都一樣
  • edited 七月 2009
    問題在windows是big5編碼
    遇到big5必須轉換成UTF-8
    php.ini的default_charset可以mark掉
    用SoltyRain的方式轉換應該就ok了
  • edited 七月 2009
    #11
    這個方法我試過 也可以執行
    只是有人告訴我不用iconv
    也可以run

    我認為是`dir /w`執行出來的中文是big5編碼的關係
    許功蓋跟本就沒關係 因為我的程式碼 跟環境都設定成utf-8
    許功蓋也都可正常顯示

    網路我找了很多 還是找不到解答
    主要都是再說許功蓋 但我的問題不是在許功蓋呀><
  • edited 七月 2009
    1.AddDefaultCharset mark掉
    2.apache重啟
    3.由header決定語系
  • edited 七月 2009
    其實我比較想了解的是...
    你不想用iconv的理由是?或許這才是解決問題的重點
  • edited 七月 2009
    #15
    測試後還是沒用
    #16
    我本來是用iconv
    可是我再別的地方問,有人可以不用iconv
    就達到這樣的效果

    如果大大也是不用iconv 就有這樣的效果
    能否提供我 你環境的設定
    php.ini httpd.conf
  • 280280
    edited 七月 2009
    系統肉腳插一下話

    看你的問題,個人解讀是這樣
    同一個頁面,有 BIG5 編碼的字,同時有 UTF-8 編碼的字
    所以不管你切換那種編碼顯示
    都會有一種字是亂碼

    如果是這樣的話
    這是正常的,因為編碼本來就不一樣

    知道的是,你想要的最後結果是 UTF-8 顯示
    所以你使用 iconv 將 BIG5 轉 UTF-8

    現在你想要不使用 iconv
    想靠資料庫輸出的編碼設定達到這個效果

    如果是這樣的話
    系統的部份我不知道
    但是,就我個人的經驗來說

    不管資料庫的編碼格式為何
    如果你 insert 的資料是 BIG5 的編碼
    那讀出來的就是 BIG5

    如果你想要的是 insert BIG5 但讀出顯示時想要靠系統設定,轉成 UTF8

    光靠系統設定可不可以達到這個效果不知道
    但個人是認為不太可能!
  • edited 七月 2009
    280..事實上他是要外部執行system('dir/w')
    但問題在於WAMP環境本質就不是utf8
    跟資料庫應用沒關係 =.=
    PS.LAMP就不會有這些問題,或許你該問問那個人他的環境與設定
    對了,如果真有這樣神奇的windows設定法不妨分享一下,聽起來真的很妙
  • 280280
    edited 七月 2009
    重看了一下問題
    確認過後
    不好意思,搞錯問題的方向

    新了解的問題是!

    thisismyph 想要做一個目錄 list
    遇到中文檔名
    顯示有問題

    小弟個人認為
    想不使用iconv轉碼應該是不可能

    我想這應該是作業系統的問題

    sam0228 大 跟 SoltyRain 大的一些系統設定建議
    沒用我想應該也是正常的

    因為不管 headre 或是 php.ini 或是 apache 設定等
    他都不是檔案管理系統
    我想應該只有檔案管理系統的語系設定才有用吧

    例如:
    以 XP 這作業系統來說
    可以使用日文檔名,簡體字檔名.....
    是因為 XP 的檔案管理系統是支援 Unicode 編碼

    所以假設 thisismyph 是使用不支援 Unicode 的檔案管理系統
    他取到的檔名編碼就一定就是 big5
    所以建議方向上應該是朝檔案管理系統的編碼設定著手

    系統肉腳,不保證正確,參考就好!!

    PS.確實如 SoltyRain 大所說的
    不使用 iconv 轉碼的理由是??

    如果需求只是要不使用 iconv
    是有人自寫 big5 轉 utf8 的函數

    如果只是不想使用 iconv 轉的話
  • edited 七月 2009
    謝謝各位
    我也有上國外的網站去問
    如同上面幾位大大所說
    是os的問題
    如果我的os 安裝時是utf8
    就沒有這問題
    linux我沒摸過
    但我的windows xp的執行運算元跑出的是big5沒錯

    至於我在別的地方問的那位大大
    我猜測他是兩個(網頁編碼和os的編碼)都是用big5
    我會再與他確認,如有不用iconv的方法我會再與各位報告

    我也太執著不用iconv了-.-
    十分感謝各位

  • edited 七月 2009
    去藍色小舖閒逛時,看到這個..
    截取一段
    是我耍笨了~~~~~

    我上次跟你說可以的原因是。因為我當時以為你說的是那echo那段。
    我的目錄內是沒中文檔名的。所以一直沒注意。

    突然看到蔥大寫的那段話。我突然意會到是不是我搞錯地方了。
    建立幾個中文檔名上去做測試。果然是我搞錯了。

    我這邊是不行的。
    http://www.blueshop.com.tw/board/show.asp?subcde=BRD20090722140242XGS&fumcde=FUM20041006152627A9N&rplcnt=16
    真的被卡唬爛了...嘖嘖
Sign In or Register to comment.