網際網路‎ > ‎

字元編碼的學問

網站伺服器上的中文檔案無法透過瀏覽器下載?又是Big5的問題!

張貼者:2013年12月10日 下午8:02Wei-Chang Lin   [ 已更新 2013年12月25日 下午6:55 ]

發生原因:
資料庫被用戶上傳了萬惡的中文檔案,於是呢,設定上只認UFT8的各家瀏覽器就哭了....特別是chrome這種URL不能改認BIG5的就慘了,你的用戶永遠只會看見一串亂碼後的網址傳送 Not Found 404的頁面......
 
不然就是例如只能出現這種建議方案:無法下載中文檔名的附件嗎? 取消IE瀏覽器「工具/網際網路選項/進階/國際*/傳送 UTF-8 URL(就是不能打V哦)」,然後重新啟動瀏覽器即可


But!這樣子不想用IE,甚至不能用IE的廣大手機用戶怎麼辦?

解決方案:
感謝前人種樹,簡單來說就是把apache當中加入一個mod,名稱為:為fileiri_module

設定方式如下:
1.用centos就很開心了,因為只需要
yum -y install httpd-devel      <---加入apache裡mod的編譯器
wget http://dev.w3.org/apache-modules/mod_fileiri/mod_fileiri.c       <---上網去把fileiri.c抓回來~

在你抓檔案的目錄下指令: apxs -i -a -c mod_fileiri.c     <----完成編譯,會自動幫你放進apache喔!

/etc/httpd/conf/httpd.conf 底下會多出這一行
LoadModule fileiri_module /usr/lib/httpd/modules/mod_fileiri.so       <----掛載本module

我們現在只需要在上面這行字的底下多加上:
<IfModule mod_fileiri.c> 
FileIRI On 
FilenameCharset Big5 
</IfModule>

下指令service httpd restart重開apache,一切就搞定了!


參考文獻:
------------------------------------------------------------------------------------------------------
20131226新增ubuntu底下的安裝方法,因為架構略有不同所以指令與centos有一點差別,apache2 mod_fileiri.so 

1.apt-get install apache2-dev

2.
wget http://dev.w3.org/apache-modules/mod_fileiri/mod_fileiri.c 

3.apxs2 -i -a -c mod_fileiri.c

4.在/etc/apache2/apache2.conf檔案末端底下加入以下內容:
<IfModule mod_fileiri.c> 
FileIRI On 
FilenameCharset Big5 
</IfModule>

5.service apache2 restart  ,搞定。

附記:
因為apache2在ubuntu下設定檔稍微比較麻煩,所以如果要載入LoadModule fileiri_module卻在mods-enabled當中找不到,那麼就必須要手動啟用喔!
ubuntu下啟動指定Module,可使用a2enmod這個指令


Big5相關的問題

張貼者:2012年8月15日 下午11:59Wei-Chang Lin   [ 已更新 2012年8月15日 下午11:59 ]

處理與Big5相關的問題:
我的名字怎麼變成了問號?-中文資料處理漫談
Big5亂碼表
MySQL 中文編碼徹底研究
1.解決Big5存入MySQL後變成UTF-8亂碼問題
在一開始與DB連結後,加入以下這一行即可。
<?php
$mysqli = new mysqli(hostname, account, password, DB);
$result = $mysqli->query("SET NAMES 'big5'");      //使用Big5編碼存入MySQL
?>

若是在PHP裡output出來的結果顯示為UTF-8的亂碼,
可先用記事本開啟該檔再另存新檔,
其中最下方的編碼得選ANSI,
而非UTF-8。
接下來再用DW、UD等文字編輯器來編輯即可!

2.校對影響的主要是排序,其實跟資料怎麼存沒關係。就算你的資料是big5編碼,校對用utf-8也不會有影響,只要存入跟取出的校對一致,同時與table設定的一致,就不會有問題。((真的嗎??))
3.PHP字串處理

1-2 of 2