我有一个包含单词列表的文件,与此不太相似,我想导入到我的MSSQL数据库中;
Świętochłowice
Chełmiec
Wałcz
...
我想将波兰语字符初步转换为ASCII,以便可以通过我的数据库进行解析。 我正在使用SSIS导入数据,因此我使用vb.net脚本来修改导入之前/之前的文本。
我试过了;
Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
Row.unsanitised1.Replace("Ą", "A")
Row.unsanitised1.Replace("ą", "a")
Row.unsanitised1.Replace("Ć", "C")
Row.unsanitised1.Replace("ć", "c")
Row.unsanitised1.Replace("Ę", "E")
Row.unsanitised1.Replace("ę", "e")
Row.unsanitised1.Replace("Ł", "L")
Row.unsanitised1.Replace("ł", "l")
Row.unsanitised1.Replace("Ń", "N")
Row.unsanitised1.Replace("ń", "n")
Row.unsanitised1.Replace("Ó", "O")
Row.unsanitised1.Replace("ó", "o")
Row.unsanitised1.Replace("Ś", "S")
Row.unsanitised1.Replace("ś", "s")
Row.unsanitised1.Replace("Ź", "Z")
Row.unsanitised1.Replace("ź", "z")
Row.unsanitised1.Replace("Ż", "Z")
Row.unsanitised1.Replace("ż", "z")
Row.sanitised = Row.unsanitised
Row.sanitised1 = Row.unsanitised1
End Sub
然而,当读入文件时,字符读取不正确,它们更像“Ĺ”,我做错了什么?我需要以unicode的形式阅读它们吗?
文件和vbscript保存在代码页1200中以保留波兰语字符。
答案 0 :(得分:0)
右,
所以经过一段时间的休息再看一遍,我发现了问题。我将它发布在这里以防万一人们在将来遇到这种情况,并且看到目前尚未解决。
@Sandeep Rowat& Tom Blodget在评论中说,代码页65001(UTF-8)是必需的。 但是,替换功能仍不适用于列表中的两个字符,Ó和ó。
我认为导入混淆了字符并使它们变得无法识别,这个理论通过导入字符并将它们转换为HEX来测试,确保它们是相同的基线字符。
Ó在导入和代码上都显示为HEX D3。
ó在导入和代码上都显示为HEX F3。
由于它们在导入和代码中是相同的,这使我相信String.Replace()函数不能按预期在这些字符上工作。
我已经通过删除并随后插入替换字符来绕过此问题;
Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
var = Row.unsanitised1.Replace("Ą", "A")
var.Replace("ą", "a")
var.Replace("Ć", "C")
var.Replace("ć", "c")
var.Replace("Ę", "E")
var.Replace("ę", "e")
var.Replace("Ł", "L")
var.Replace("ł", "l")
var.Replace("Ń", "N")
var.Replace("ń", "n")
var.Replace("Ó", "O") 'does not work?!
var.Replace("ó", "o") 'does not work?!
i = var.LastIndexOf("Ó")
Do While i >= 0
var = var.Remove(i, 1) 'this works!
var = var.Insert(i, "O") 'this works!
i = var.LastIndexOf("Ó")
Loop
i = var.LastIndexOf("ó")
Do While i >= 0
var = var.Remove(i, 1) 'this works!
var = var.Insert(i, "o") 'this works!
i = var.LastIndexOf("ó")
Loop
var.Replace("Ś", "S")
var.Replace("ś", "s")
var.Replace("Ź", "Z")
var.Replace("ź", "z")
var.Replace("Ż", "Z")
var.Replace("ż", "z")
Row.sanitised = Row.unsanitised
Row.sanitised1 = var
i = Nothing
End Sub
我希望没有其他人能够解决这个问题。