內碼錶(codepage)
簡介:
codepage指的是一個經過挑選的以特定順序排列的
字元內碼列表(內碼錶),對於早期的單
位元組內碼的語種,codepage中的內碼順序使得系統可以按照此列表來根據鍵盤的輸入值給出一個對應的內碼.對於雙位元組內碼,則給出的是MultiByte到Unicode的對應表,這樣就可以把以Unicode形式存放的字元轉化為相應的字元內碼.
注意ASP和SAP中的codepage的區別。
歷史發展:
此技術的使用最早追溯到MS-DOS3.3(1987年4月發行)向IBMPC用戶引進了內碼錶的概念,Windows也使用此概念。
最初的IBM字元集被稱作內碼錶437,或者「MS-DOSLatinUS)。內碼錶850就是「MS-DOSLatin1」,它用附加的帶重音字母(但不是Latin1ISO/ANSI標準)代替了一些線形字元。其他內碼錶被其他語言定義。最低的128個代碼總是相同的;較高的128個代碼取決於定義內碼錶的語言。
在MS-DOS中,如果用戶為PC的鍵盤、顯示卡和印表機指定了一個內碼錶,然後在PC上創建、編輯和列印檔案,一切都很正常,每件事都會保持一致。然而,如果用戶試圖與使用不同內碼錶的用戶交換檔案,或者在機器上改變內碼錶,就會產生問題。字元碼與錯誤的字元相關聯。應用程式能夠將內碼錶信息與檔案一起保存來試圖減少問題的產生,但該策略包括了某些在內碼錶間轉換的工作。
雖然內碼錶最初僅提供了不包括帶重音符號字母的附加拉丁字元集,但最終內碼錶的較高的128個字元還是包括了完整的非拉丁字母,例如希伯來語、希臘語和斯拉夫語。自然,如此多樣會導致內碼錶變得混亂;如果少數帶重音的字母未正確顯示,那么整個文字便會混亂不堪而不可閱讀。
內碼錶的擴展正是基於所有這些原因,但是還不夠。斯拉夫語的MS-DOS內碼錶855與斯拉夫語的Windows內碼錶1251以及斯拉夫語的Macintosh內碼錶10007不同。每個環境下的內碼錶都是對該環境所作的標準字元集修正。IBMOS/2也支持多種EBCDIC內碼錶。
ASP中:
CodePage的作用,是決定頁面以何種編碼方式顯示動態內容。當頁面被伺服器處理之後,頁面將以CodePage設定的編碼輸出到客戶端。當然,CodePage的參數需正確,否則,將產生錯誤信息“CodePage 值無效。指定的 CodePage 值無效。”(事件ID: 0204)。如果CodePage沒有設定,則伺服器使用默認的CodePage載入到你的Session裡面,使用程式代碼:Response.Write(Session.CodePage)可以查看你當前使用的CodePage。
LANGUAGE="VBSCRIPT"和LANGUAGE="javascript",申明ASP當前使用的編程腳本分別為 VBSCRIPT和javascript。一般在程式第一行進行申明。當使用該腳本申明後,以下所有程式運用全得符合該
腳本語言的所有語法,兩者不能混淆 使用,否則出錯。我們在寫ASP時,一般不做限定,因為經常會在一ASP頁面寫不同的腳本,當然這也是以犧牲執行效率為代價的。
CodePage:可讀/可寫。整型。定義用於在瀏覽器中顯示頁內容的
代碼頁。代碼頁是
字元集的數字值,不同的語言使用不同的代碼頁。例 如,ANSI代碼頁為1252,日文代碼頁為932,簡體中文代碼頁為936。一般情況下,當你上傳到國外
網頁空間,或者提取資料庫記錄等出現
亂碼時,就 採用這種方法解決。
SAP中:
最經常我們使用的讀取數據的方法就是使用GUI_UPLOAD這個FM.在這個FM中有個CODEPAGE,是用來指定代碼頁的.
Siebel Value | SAP Code page | Description |
CP1252 | 1100 | SAP Latin-1 - ISO8859-1 - code page |
ISO-8859-2 | 1402 | SAP Latin-2 - ISO8859-2 |
ISO-8859-5 | 1500 | SAP Cyrillic - ISO8859-5 |
CP1254 | 1610 | SAP Turkish - ISO8859-9 |
CP1253 | 1700 | SAP Greek - ISO8859-7 - Not a complete match |
CP1255 | 1800 | SAP Hebrew - ISO8859-8 - Not a complete match |
CP932 | 8000 | SAP Shift-JIS |
CP950 | 8300 | SAP Tranditional Chinese |
CP936 | 8400 | SAP Simplified Chinese |
CP949 | 8500 | SAP Korean |
CP874 | 8600 | SAP Thai |
OEM(IBM PC)代碼頁
437 —最初的IBM PC代碼頁,實現了擴展ASCII字元集
737 — 希臘語
850 —“多語言(Latin-1)” (西歐語言)
852 —“斯拉夫(Latin-2)” (中歐及東歐語言)
855 — 西里爾(Cyril)字母
857 — 土耳其語
858 —帶歐元符號的“多語言”
860 — 葡萄牙語
861 — 冰島語
863 — 法語加拿大英語
865 — 北歐
866 — 西里爾(Cyril)字母
869 — 希臘語
代碼頁819實現了Latin-1(ISO/IEC 8859-1),用於IBM AS/400小型機。
中日韓語言代碼頁
既是OEM代碼頁,也是Windows代碼頁。
932 —日文
936 —簡體中文(GBK)
949 —韓文
950 —繁體中文(大五碼)
其他代碼頁
10000 —Macintosh Roman encoding (followed by several other Mac character sets)
10007 —Macintosh Cyrillic encoding
10029 —Macintosh Central European encoding
1200 —UCS-2LE Unicode 小端序
1201 —UCS-2BE Unicode 大端序
65000 — UTF-7 Unicode
65001 — UTF-8 Unicode
Windows(ANSI)代碼頁
874 —泰文字母
1250 —東歐拉丁字母
1251 — 古斯拉夫語
1252 —西歐拉丁字母ISO-8859-1.
1253 — 希臘語
1254 — 土耳其語
1255 — 希伯來語
1256 — 阿拉伯語
1257 — 巴爾
1258 — 越南
1254 — 土耳其語
Windows-1252與ISO-8859-1並不完全一致。ISO-8859-1在0x80-0x9F範圍的控制字元,在Windows-1252中被可列印字元取代。由於在web網頁中,ASCII控制字元不起作用,所以網頁一般用Windows-1252代碼頁標記替代ISO-8859-1標記。