2014-11-04 44 views
1

我有一組來自客戶端的應該是西里爾語的表,但我想原始編碼是錯誤的或者沒有設置。所有的文字都是亂碼。 如果我將文本過濾到html頁面並將編碼設置爲Cyrillic-1251,我會看到它應該是的文本。將Windows Char設置爲Cyrillic

Before: Ñèíèöûí À.Â. 
After: Синицын А.В. 

我一直在尋找一個解決VBA將文本轉換表中沒有成功。我認爲這很容易,但至今沒有運氣。

我運行Windows 7與Access 2010

如果你不知道的訪問,但有任何VBA函數來做到這一點,我可以適應我的需要。

任何幫助,將不勝感激。

回答

2

解決該問題的一種可能的方法是將表格導出爲CSV作爲代碼頁1252(「ANSI」),然後將其作爲代碼頁1251導入。我只是嘗試了這種方法,並且對於名爲[OldTable]

OldTable.png

以下VBA代碼

Option Compare Database 
Option Explicit 

Sub DiskBounce() 
    Const tempFilePath = "C:\Users\Gord\Desktop\foo.csv" 
    DoCmd.TransferText _ 
      TransferType:=acExportDelim, _ 
      TableName:="OldTable", _ 
      FileName:=tempFilePath, _ 
      HasFieldNames:=True, _ 
      CodePage:=1252 
    DoCmd.TransferText _ 
      TransferType:=acImportDelim, _ 
      TableName:="NewTable", _ 
      FileName:=tempFilePath, _ 
      HasFieldNames:=True, _ 
      CodePage:=1251 
    Kill tempFilePath 
End Sub 

產生以下[newtable的]

NewTable.png

+0

希望得到更直接的東西,可能仍然會使用它。同時,+1解決方案。如果我最終使用它,我會回來並將其標記爲已接受。謝謝 – 2014-11-04 14:54:47

+0

好吧,在玩弄和做更多的研究之後,看起來我可以在雙字節中添加836(如果值超過127)。這對於單個字符串來說很方便,但它看起來像你的過程對整個表格來說是最簡單的。謝謝。 – 2014-11-05 03:28:58