簡體   English   中英

在MS Access中以utf-8編碼導出文本文件

[英]exporting text file with utf-8 encoding in ms access

我正在從ms Access 2010中的2個查詢中導出文本文件。查詢來自不同的鏈接ODBC表(但表僅在數據,結構和數據類型相同方面有所不同)。 我設置了導出規范,以兩個文件的utf-8編碼格式導出文本文件。 現在來麻煩部分了。 當我導出查詢並在記事本中打開它們時,一個查詢在utf-8中,第二個查詢在ANSI中。 我不知道當兩個查詢具有相同的導出規范並且使我發瘋時,這怎么可能。

這是我的VBA代碼,用於導出查詢:

DoCmd.TransferText acExportDelim,“ miniflow”,“ qry01_CZ_test”,“ C:\\ TEST_CZ.txt”,否DoCmd.TransferText acExportDelim,“ miniflow”,“ qry01_SK_test”,“ C:\\ TEST_SK.txt”,否

我還嘗試通過添加65001作為編碼參數來修改它,結果是相同的。

您知道什么地方可能出問題嗎?

不要依靠記事本中的“文件打開”對話框來告訴您文本文件是編碼為“ ANSI”還是UTF-8。 那只是記事本的“猜測”,是基於文件是否以字節EF BB BF開頭,該字節是UTF-8字節順序標記(BOM)。

許多( 大多數? )Windows應用程序將在以UTF-8編碼的文本文件的開頭包含UTF-8 BOM。 一些Unicode純粹主義者經常(非常有力地)堅持認為UTF-8文件不需要BOM,而應該將BOM排除在外,但這就是Windows應用程序傾向於表現的方式。

不幸的是,Access在將文件導出為文本時並不總是遵循該模式。 從Access導出的UTF-8文本文件可能會忽略BOM,並且如果它們假定UTF-8編碼文件始終將BOM作為文件的前三個字節,則可能會使記事本等應用程序感到困惑。

對於確定文本文件編碼的更可靠方法,請考慮使用諸如Notepad ++之類的應用程序打開該文件。 它將區分具有 BOM的UTF-8文件(其指定為“ UTF-8”)和具有BOM的UTF-8文件(其指定為“ ANSI as UTF-8”)

為了說明,請考慮以下訪問表

access.png

當導出為采用UTF-8編碼的文本(CSV)時,

ExportSpec.png

記事本中的“文件打開”對話框報告它被編碼為“ ANSI”

notepad.png

但十六進制編輯器顯示它實際上已編碼為UTF-8(字符é編碼為C3 A9 ,而不是像真正的“ ANSI”編碼那樣簡單的E9

hexedit.png

並且記事本++將其識別為“ ANSI UTF-8”

npp.png

換句話說,是沒有BOM的UTF-8編碼文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM