javascript 轉碼問題 utf8 轉成 big5
想請教一下有人知道如何用 javascript 轉碼 utf-8 轉 big5 嗎??
由於我的網頁必須用 asp.net 2005 設計,前端程式會用一些 javascript 控制
asp.net 開啟的頁面預設都是 utf-8 改了好像也都沒用,
就算<m e t a h t t p-equiv="Content-Type" content="text/html; charset=big5" />
改了頁面開啟還是會變成utf-8,
因為我目前想要在 javascript 呼叫並傳訊息給一個外部網頁,而那個外部網頁
只接受big5(外部網頁是php作的),
所以如果我直接傳的話網頁收到的就會是亂碼,
也就是說我必須先編碼,我有用過以下 3 個 javascript 指令
escape,encodeURI,encodeURIComponent,轉出來的值都不是我要的
例如我要轉測試的(測)
用escape('測')轉出來會是(%u6E2C)
用encodeURI('測')轉出來會是(%E6%B8%AC)
用encodeURIComponent('測')轉出來也會是(%E6%B8%AC)
實際上我要的應該是要轉成(%B4%FA)才對
不過我有試著用一個純html設定utf-7用escape('測')
轉出來就是(%B4%FA)沒錯,但重點是我是要用asp.net開發
還有一個問題,就是外部網頁會在畫面回傳一個文字訊息
請問我要如何用 javascript 抓到那個訊息呢
我是用 wind1=window.open('對方網頁'); 呼叫網頁
所以我會用 str=wind1.document.xx 接收資料
但由於對方網頁回傳的只有一個文字訊息如(msg=123456)
所以document 後面都不曉得要用什麼收
以上問題不知有誰可以幫我解答謝謝!!!
建議你在asp內部對要用big5編碼的資料預先處理,然後轉成URL編碼格式的字串,在交給Javascript處理。光靠Javascript會有點困難...
關鍵在於不知道有沒有人做好一個純javascript的utf-8 to big5的對照表,如果有的話用Javascript是還ok。如果有的話,可以用charCodeAt取出每個utf8編碼的字的數值,然後查表取得big5編碼的對應數值。接著就可以寫一個簡單的數字轉Hex字串的功能把他轉成URL編碼的格式。
例如參考這篇:
http://www.neo.com.tw/archives/335
不過我.net不熟。
看來好像真的應該沒有比較簡單的轉碼方式了
所以我目前可能會先用兩種方式處理看看
一種就是如 http://www.neo.com.tw/archives/335
用後端先轉,再由 Javascript 抓取
一種就是直接用對照表的方式了
fillano提到:
純javascript的utf-8 to big5的對照表,如果有的話用Javascript是還ok。如果有的話,可以用charCodeAt取出每個utf8編碼的字的數值
你用 ASP.NET的話
網站的全域設定
是預設輸出成 utf-8 的
你要在你的網頁的Server端用指定Http檔頭的方式
去通知用戶端的瀏覽器變更語系
你可以參考
Setting the HTTP charset parameter
http://www.w3.org/International/O-HTTP-charset
以前在Asp裡面,我是這樣子處理的,
先用session.codepage 950 ,response你要傳送的文字,
做完再session.codepage 65001轉回utf-8了 。
另一個接收訊息,你要自己另外寫一支接收的網頁,
判斷完成之後,導向你原本的網頁就行了