上一頁|下一頁

相容和不相容的編碼

相容和不相容的編碼概觀

ASCII 是大部分編碼的基礎,並供大部分個人電腦、小型電腦和工作站使用。不過,IBM 大型主機使用 EBCDIC 編碼。 因此,ASCII 及 EBCDIC 的電腦和資料不相容。如果某種編碼的部分或所有字元與另一種編碼的字元不同,則需要進行轉碼。
不過,若要避免轉碼,您可以建立資料集,以及指定 SAS 不會轉碼的編碼值。例如,如果您在 ENCODING= 資料集選項或是 LIBNAME 陳述式的 INENCODING= 或 OUTENCODING= 選項中使用下列值,則不會執行轉碼:
  • ANY 指定不需要轉碼,即使是在 EBCDIC 與 ASCII 編碼之間也是一樣。
    附註: ANY 是二進位的同義字。 因為資料是二進位,所以與實際編碼無關。
  • ASCIIANY 可讓您建立與所有 ASCII 型編碼相容的資料集。
  • EBCDICANY 可讓您建立與所有 EBCDIC 型編碼相容的資料集。
您可能會想要建立含有混合編碼的 SAS 資料集。例如,Latin1 和 Latin2。您不想要轉碼資料,以進行輸入或輸出處理。預設會將資料轉碼為目前工作階段編碼。
SAS 檔案和 SAS 工作階段使用不相容的編碼時,必須轉碼資料。 例如,ASCII 和 EBCDIC。
在部分情況下,因為 SAS 檔案和 SAS 工作階段的編碼相容,所以不需要轉碼。
如需依作業環境的編碼清單,請參閱 SAS 工作階段的編碼值

換行字元以及 EBCDIC 與 ASCII 之間的資料傳輸

在 ASCII 作業環境下執行的軟體,需要換行字元指定行尾。將資料從 z/OS 傳輸至支援 ASCII 編碼的電腦時,因為無法辨識 EBCDIC 新行字元,所以可能會發生輸出格式問題,特別是在 HTML 輸出中。 針對 z/OS,SAS 支援兩組 EBCDIC 型編碼:
  • 名稱中含有 EBCDIC 的編碼會使用 EBCDIC 換行字元與 ASCII 換行字元的傳統對應,而這可能會導致資料顯示為一個資料流。
  • 名稱中含有 Open Edition 的編碼會使用換行字元作為行尾字元。 將資料傳輸至使用 ASCII 的作業環境時,EBCDIC 新行字元會對應至 ASCII 換行字元。 此對應可讓 ASCII 應用程式正確地解譯行尾,以產生較佳的輸出格式。
如需依作業環境的編碼清單,請參閱 SAS 工作階段的編碼值

EBCDIC 和 OpenEdition 編碼相容

EBCDIC 和 OpenEdition 是相容的編碼。
名稱中含有 EBCDIC 的編碼會使用 EBCDIC 換行字元 (0x25) 與新行字元 (0x15) 的傳統對應。
名稱中含有 OPEN_ED 且描述中含有 OpenEdition 的編碼會切換新行字元與換行字元的對應。亦即,它們使用換行字元作為行尾字元。
如果兩個編碼使用相同的字碼頁數字,但一個是 EBCDIC,而另一個是 Open Edition,則不需要轉碼。
範例:
如果資料是以 EBCDIC1143 編碼,而 SAS 工作階段是以 OPEN_ED-1143 編碼,則不需要轉碼,因為它們使用相同的 1143 字碼頁。
若要在 ASCII 與 EBCDIC 之間傳輸資料,則可以從相容的編碼清單中指定 Open Edition 編碼。
附註: NONLSCOMPATMODE 中預設會使用 Open Edition 編碼。

部分東亞 MBCS 編碼相容

部分東亞雙位元組 (DBCS) 是相容的編碼。清單中的每一行都包含相容的編碼:
  • SHIFT-JIS、MS-932、IBM-942、MACOS-1
  • MS-949、MACOS-3、EUC-KR
  • EUC-CN、MS-936、MACOS-25、DEC-CN
  • EUC-TW、DEC-TW
  • MS-950、MACOS-2、BIG5
如果 SAS 工作階段是以群組中的一種編碼進行編碼,而資料集是以另一種編碼進行編碼,但是位在相同的群組中,則不需要轉碼。
範例:
如果工作階段編碼是 SHIFT-JIS,而資料集編碼是 IBM-942,則不需要轉碼。
上一頁|下一頁|頁面頂端