将XML数据导入XML会使用法语单词产生错误的字符

我有testing脚本(XML),我需要翻译(从Excel表)。 我从Excel表格中search英文单词,然后将它们翻译成德文,法文和意大利文。 我用法语单词有问题。

图片

我在VBA中使用macros。 当我在英语中find相应的法语单词时,我正在使用函数Find 。 当我在Excel工作表中find法语单词时,我只是将int保存为String

If intChoice <> 0 Then strPath = Application.FileDialog( _ msoFileDialogOpen).SelectedItems(1) Dim strFolderPath As String strFolderPath = Left(strPath, Len(strPath) - 4) Set fGermanOutputFile = fso.CreateTextFile((strFolderPath & "_German.xml")) Set fItalianOutputFile = fso.CreateTextFile((strFolderPath & "_Italian.xml")) Set fFrenchOutputFile = fso.CreateTextFile((strFolderPath & "_French.xml")) Open strPath For Input As #1 Do Until EOF(1) Line Input #1, strLine intLastFoundChar = 0 strGermanLine = "" strFrenchLine = "" strItalianLine = "" For intI = 0 To (UBound(ArrStrOpeningTags, 1) - 1) intFoundString = InStr(strLine, ArrStrOpeningTags(intI)) If intFoundString <> 0 Then intI = 3 End If Next intI If intFoundString <> 0 Then For intJ = 0 To (UBound(ArrStrParamsToReplace) - 1) strLine = Right(strLine, Len(strLine) - intLastFoundChar) strStringToLookFor = (ArrStrParamsToReplace(intJ) & "=""") intFoundString = InStr(1, strLine, strStringToLookFor, vbBinaryCompare) If intFoundString <> 0 Then intStringSplitIndex = (intFoundString + Len(strStringToLookFor)) strStringToLookFor = Right(strLine, Len(strLine) - intStringSplitIndex + 1) strDummyString = Left(strLine, intStringSplitIndex - 1) strGermanLine = strGermanLine & strDummyString strFrenchLine = strFrenchLine & strDummyString strItalianLine = strItalianLine & strDummyString intLastFoundChar = intLastFoundChar + intStringSplitIndex intFoundString = InStr(strStringToLookFor, """") If intFoundString <> 0 Then strStringToLookFor = Left(strStringToLookFor, intFoundString - 1) Set rngFoundString = rngEnglishDictionary.Find(strStringToLookFor) If (rngFoundString Is Nothing) Then Debug.Print "String " & strStringToLookFor & " not found!" strGermanLine = strGermanLine & strStringToLookFor & """" strFrenchLine = strFrenchLine & strStringToLookFor & """" strItalianLine = strItalianLine & strStringToLookFor & """" Else intWordToReplaceIndex = rngEnglishDictionary.Find(strStringToLookFor).Row - rngEnglishDictionary.Row + 1 strGermanLine = strGermanLine & rngGermanDictionary(intWordToReplaceIndex) & """" strFrenchLine = strFrenchLine & rngFrenchDictionary(intWordToReplaceIndex) & """" strItalianLine = strItalianLine & rngItalianDictionary(intWordToReplaceIndex) & """" End If intLastFoundChar = intLastFoundChar + Len(strStringToLookFor) End If End If Next intJ Else strGermanLine = strLine strFrenchLine = strLine strItalianLine = strLine End If fGermanOutputFile.WriteLine (strGermanLine & vbCrLn) fFrenchOutputFile.WriteLine (strFrenchLine & vbCrLn) fItalianOutputFile.WriteLine (strItalianLine & vbCrLn) strGermanLine = "" strFrenchLine = "" strItalianLine = "" Loop End If 

默认情况下,CreateTextFile以ASCII编码创build文件。 为了将其保存为UTF-8,我们必须在创build文本文件时进行设置,

 Set fGermanOutputFile = fso.CreateTextFile((strFolderPath & "_German.xml"), True, True) Set fItalianOutputFile = fso.CreateTextFile((strFolderPath & "_Italian.xml"), True, True) Set fFrenchOutputFile = fso.CreateTextFile((strFolderPath & "_French.xml"), True, True) 

第一个是你的文件名,第二个参数是“覆盖”的True,第三个参数是True,使用“Unicode”与“ASCII”。 根据这个