上一頁|下一頁

ENCODING= 選項

覆寫和轉碼外部檔案之輸入或輸出處理的編碼。

有效期限: %INCLUDE 陳述式;FILE 陳述式;FILENAME 陳述式;FILENAME 陳述式;EMAIL (SMTP) 存取方法;INFILE 陳述式;ODS 陳述式;FILE 命令;INCLUDE 命令
類別: 資料存取

語法

ENCODING= 'encoding-value'

選用的引數

ENCODING= 'encoding-value'

指定用於讀取、寫入、複製或儲存外部檔案的編碼。 ENCODING= 的值指出外部檔案的編碼與目前工作階段編碼不同。

當您使用外部檔案讀取、寫入、複製或儲存資料時,SAS 會將資料從工作階段編碼轉碼為指定的編碼。
如需詳細資料,請參閱轉碼資料的 SBCS、DBCS 和 Unicode 編碼值
預設 SAS 使用目前工作階段編碼。

詳細資料

下表提供 ENCODING 選項如何與對應陳述式搭配使用的資訊:
%INCLUDE 陳述式:
從指定的來源檔案讀取 SAS 陳述式和資料行 (在 z/OS 下不予支援)。
FILE 陳述式:
寫入至外部檔案。
FILENAME 陳述式:
從外部檔案讀取或寫入至外部檔案。
FILENAME 陳述式,EMAIL (SMTP) 存取方法:
透過程式設計方式傳送電子郵件。
INFILE 陳述式:
從外部檔案讀取。
ODS 陳述式:
控制用來產生、儲存或重新產生 SAS 程序和 DATA 步驟輸出的 Output Delivery System 功能。
FILE 命令:
將視窗的內容儲存至外部檔案。
INCLUDE 命令:
將外部檔案複製至目前視窗。
部分編碼使用位元組順序標記 (BOM)。BOM 是在指定編碼時產生。針對 UTF-8 編碼,您必須在檔案名稱和檔案 DATA 步驟陳述式上指定 encoding=utf-8,以產生 BOM。

範例

範例 1: 使用 FILE 陳述式指定寫入至外部檔案的編碼

此範例從 SAS 資料集建立外部檔案。目前工作階段編碼是 Wlatin1,但是外部檔案的編碼必須是 UTF-8。 SAS 預設會使用目前工作階段編碼來寫入外部檔案。
若要指定用於將資料寫入至外部檔案的編碼,請指定 ENCODING= 選項:
libname myfiles 'SAS data-library';
filename outfile 'external-file';
data _null_;
set myfiles.cars;
file outfile encoding="utf-8";
put Make Model Year;
run;
當您告訴 SAS,外部檔案要是 UTF-8 編碼時,SAS 接著會將資料從 Wlatin1 轉碼為指定的 UTF-8 編碼。

範例 2: 使用 FILENAME 陳述式指定讀取外部檔案的編碼

此範例從外部檔案建立 SAS 資料集。外部檔案是 UTF-8 字元集編碼,而目前 SAS 工作階段是 Wlatin1 編碼。SAS 預設會假設外部檔案的編碼與工作階段編碼相同,這樣會將字元資料不正確地寫入至新的 SAS 資料集。
若要指定讀取外部檔案時使用的編碼,請指定 ENCODING= 選項:
libname myfiles 'SAS data-library'; 

filename extfile 'external-file' encoding="utf-8"; 
data myfiles.unicode; 
infile extfile; 
input Make $ Model $ Year; 
run;
當您指定外部檔案是 UTF-8 時,SAS 接著會在寫入至新 SAS 資料集時,將外部檔案從 UTF-8 轉碼為目前工作階段編碼。因此,會以 Wlatin1 正確地將資料寫入至新的資料集。

範例 3: 使用 FILENAME 陳述式指定寫入至外部檔案的編碼

此範例從 SAS 資料集建立外部檔案。SAS 預設會使用目前工作階段編碼來寫入外部檔案。目前工作階段編碼是 Wlatin1,但是外部檔案的編碼必須是 UTF-8。
若要指定將資料寫入至外部檔案時使用的編碼,請指定 ENCODING= 選項:
libname myfiles 'SAS data-library'; 
filename outfile 'external-file' encoding="utf-8"; 
data _null_; 
set myfiles.cars; 
file outfile; 
put Make Model Year; 
run;
當您指定外部檔案的編碼是 UTF-8 時,SAS 接著會在寫入至外部檔案時,將資料從 Wlatin1 轉碼為指定的 UTF-8 編碼。

範例 4: 變更訊息本文和附件的編碼

此範例說明如何變更訊息本文和附件的文字編碼。
filename mymail email 'Joe.Developer@sas.com';
data _null_;
file mymail
subject='Text Encoding'
encoding=greek 
attach=('C:\My Files\Test.out' 
content_type='text/plain' 
encoding='ebcdic1047' 
outencoding='latin1'); 
run; 
在程式中,發生下列情況:
  • ENCODING= 電子郵件選項指定訊息本文會先編碼為希臘文 (ISO) 再傳送。
  • 針對 ATTACH= 電子郵件選項,附件選項 ENCODING= 指定讀入 SAS 之附件的編碼 (其為西方語系 (EBCDIC))。
  • 因為 SMTP 和其他電子郵件介面不支援 EBCDIC,所以附件選項 OUTENCODING= 會先將附件轉換為西方語系 (ISO) 再傳送。

範例 5: 使用 INFILE= 陳述式指定從外部檔案讀取的編碼

此範例從外部檔案建立 SAS 資料集。外部檔案的編碼是 UTF-8,而目前 SAS 工作階段編碼是 Wlatin1。SAS 預設會假設外部檔案的編碼與工作階段編碼相同,這樣會將字元資料不正確地寫入至新的 SAS 資料集。
若要指定讀取外部檔案時使用的編碼,請指定 ENCODING= 選項:
libname myfiles 'SAS data-library';
filename extfile 'external-file';
data myfiles.unicode;
infile extfile encoding="utf-8";
input Make $ Model $ Year;
run;
當您指定外部檔案是 UTF-8 時,SAS 接著會在寫入至新 SAS 資料集時,將外部檔案從 UTF-8 轉碼為目前工作階段編碼。因此,會以 Wlatin1 正確地將資料寫入至新的資料集。

請同時參閱

陳述式:
SAS Companion for UNIX Environments 中的 “%INCLUDE Statement: UNIX”
SAS Companion for Windows 中的 “%INCLUDE Statement: Windows”
SAS Statements: Reference 中的 “FILE Statement”
SAS Statements: Reference 中的 “FILENAME Statement”
SAS Statements: Reference 中的 “INFILE Statement”
命令:
SAS Companion for z/OS 中的 “FILE Command: z/OS”
SAS Companion for UNIX Environments 中的 “FILE Command: UNIX”
SAS Companion for Windows 中的 “FILE Command: Windows”
SAS Companion for z/OS 中的 “INCLUDE Command: z/OS”
SAS Companion for Windows 中的 “INCLUDE Command: Windows”
上一頁|下一頁|頁面頂端