標籤

4GL (1) 人才發展 (10) 人物 (3) 太陽能 (4) 心理 (3) 心靈 (10) 文學 (31) 生活常識 (14) 光學 (1) 名句 (10) 即時通訊軟體 (2) 奇狐 (2) 音樂 (2) 產業 (5) 郭語錄 (3) 無聊 (3) 統計 (4) 新聞 (1) 經濟學 (1) 經營管理 (42) 解析度 (1) 遊戲 (5) 電學 (1) 網管 (10) 廣告 (1) 數學 (1) 機率 (1) 雜趣 (1) 證券 (4) 證券期貨 (1) ABAP (15) AD (1) agentflow (4) AJAX (1) Android (1) AnyChart (1) Apache (14) BASIS (4) BDL (1) C# (1) Church (1) CIE (1) CO (38) Converter (1) cron (1) CSS (23) DMS (1) DVD (1) Eclipse (1) English (1) excel (5) Exchange (4) Failover (1) FI (57) File Transfer (1) Firefox (2) FM (2) fourjs (1) gladiatus (1) google (1) Google Maps API (2) grep (1) Grub (1) HR (2) html (23) HTS (8) IE (1) IE 8 (1) IIS (1) IMAP (3) Internet Explorer (1) java (3) JavaScript (22) jQuery (6) JSON (1) K3b (1) LED (3) Linux (112) Linux Mint (4) Load Balance (1) Microsoft (2) MIS (2) MM (51) MSSQL (1) MySQL (27) Network (1) NFS (1) Office (1) Oracle (125) Outlook (3) PDF (6) Perl (59) PHP (33) PL/SQL (1) PL/SQL Developer (1) PM (3) Postfix (2) postfwd (1) PostgreSQL (1) PP (50) python (1) QM (1) Red Hat (4) Reporting Service (28) ruby (11) SAP (234) scp (1) SD (16) sed (1) Selenium-WebDriver (5) shell (5) SQL (4) SQL server (8) SQuirreL SQL Client (1) SSH (2) SWOT (3) Symantec (2) T-SQL (7) Tera Term (2) tip (1) tiptop (22) Tomcat (6) Trouble Shooting (1) Tuning (5) Ubuntu (33) ufw (1) utf-8 (1) VIM (11) Virtual Machine (2) vnc (3) Web Service (2) wget (1) Windows (19) Windows (1) WM (6) youtube (1) yum (2)

2015年4月28日 星期二

在IE傳遞get參數中文遇到亂碼

方法一
https://www.peterdavehello.org/2013/10/%E5%9C%A8ie%E5%82%B3%E9%81%9Eget%E5%8F%83%E6%95%B8%E4%B8%AD%E6%96%87%E9%81%87%E5%88%B0%E4%BA%82%E7%A2%BC/

昨天被丟了一個問題:同一隻PHP程式在Chrome/Firefox丟中文參數沒問題, 在IE就會亂碼?
code大概長這樣, 主要是把傳入的參數存入db裡面, db用的是utf-8的編碼
<!php
$con = mysql_connect("127.0.0.1","id","pw");
mysql_select_db("test", $con);
mysql_query("set names 'utf8'");
$msg = $_GET['msg'];
$sql = "INSERT INTO `db` . `table` (`column`) VALUES ('" . $msg . "')";
mysql_query($sql,$con);
mysql_close($con);
問題其實是出在IE傳遞參數時會以ANSI來編碼(即便網頁編碼是UTF-8), 自然會出現亂碼的問題, 基於現在UTF-8是主流, 所以可以在使用傳入的參數之前使用PHP內建的mb_detect_encoding做這樣的處理:
$encode = mb_detect_encoding($msg, array ("UTF-8", "BIG5", "GB2312"));
if ($encode && $encode != 'UTF-8') {
    $msg = iconv ( $encode, "UTF-8", $msg );
}
{ “UTF-8″, “BIG5″, “GB2312″ } 這段可以依序換成要被識別的編碼, 在編碼可以辨識(有被列入)且不是UTF-8的情況下會用PHP內建的iconv來做轉換的動作, 就可以解決這樣的問題啦~

方法二
http://www.tdes.chc.edu.tw/works/computer/study/internet/internet-02.htm

當您使用瀏覽器上網時,有時會發現無法瀏覽以中文名命名的網頁或者無法下載以中文命名的檔案,這跟使用微軟 Internet Explorer(簡稱IE)瀏覽器的設定有一點點的關係,按下以下的連結測試一下吧!
按下上述的連結會另開新的瀏覽視窗,如果您可以看到裡面的內容,則不用進行以下設定;如果您所看到的是很抱歉!找不到這個網頁……,請您進行以下的設定操作:
如果您的作業系統是 Windows XP,預設是無法瀏覽以中文名命名的網頁及無法下載以中文命名的檔案,所以請點選上述的網址進行測試與操作。
(1) 開啟 瀏覽器 按下功能表上的 [工具] → [網際網路選項]

(2) 點選 進階 
(3) 永遠將 URL 傳送成 UTF-8 ,不要打勾
(4) 按下確定鈕。
 

 
以上的設定完畢後,將瀏覽器關閉後再重新開啟瀏覽器,應該就可以瀏覽以中文命名的網頁內容了。

沒有留言:

張貼留言