我无法获得必要的字符

问题描述 投票:0回答:1

在 MS Access 中,我向 API 发送请求并接收乌兹别克拉丁语脚本的数据,包括 G'、Q、O' 等字符。我需要将它们转换为乌兹别克西里尔字母,这些字母看起来像 В、К、Ў。 Ш 我尝试过编写函数,但没有成功。我读过有关 ASCII 的内容,但 ASCII 表中没有这样的字母。如何在我的字段中正确显示它们?我已经为此苦苦挣扎了三天了!预先感谢您的帮助!

    Dim LatinToCyrillic As Object
    Dim Character As String
    Dim Result As String
   
    
    ' Create a dictionary for Latin to Cyrillic character mapping
    Set LatinToCyrillic = CreateObject("Scripting.Dictionary")
    
    ' Add mappings for Latin characters to Cyrillic
    LatinToCyrillic.Add "A", "А"
    LatinToCyrillic.Add "B", "Б"
    LatinToCyrillic.Add "C", "С"
    LatinToCyrillic.Add "D", "Д"
    LatinToCyrillic.Add "E", "Э"
    LatinToCyrillic.Add "F", "Ф"
   LatinToCyrillic.Add "G", "Г"
    LatinToCyrillic.Add "H", "Ҳ"
    LatinToCyrillic.Add "I", "И"
    LatinToCyrillic.Add "J", "Ж"
    LatinToCyrillic.Add "K", "К"
    LatinToCyrillic.Add "L", "Л"
    LatinToCyrillic.Add "M", "М"
    LatinToCyrillic.Add "N", "Н"
    LatinToCyrillic.Add "O‘", "Ў"
    LatinToCyrillic.Add "O", "О"
    LatinToCyrillic.Add "P", "П"
    LatinToCyrillic.Add "Q", "Қ"
    LatinToCyrillic.Add "G‘", "Ғ"
    LatinToCyrillic.Add "R", "Р"
    LatinToCyrillic.Add "S", "С"
    LatinToCyrillic.Add "T", "Т"
    LatinToCyrillic.Add "U", "Ю"
    LatinToCyrillic.Add "V", "В"
   
    LatinToCyrillic.Add "X", "Х"
    LatinToCyrillic.Add "Y", "Е"
    LatinToCyrillic.Add "Sh", "Ш"
   
    ' Initialize the result
    Result = ""
    Dim i As Long
    ' Iterate through each character in the input text
    For i = 1 To Len(inputText)
        Character = mid(inputText, i, 1)
        
        ' Check if the character has a Cyrillic equivalent
        If LatinToCyrillic.Exists(Character) Then
            Result = Result & LatinToCyrillic(Character)
        Else
            Result = Result & Character
        End If
    Next i
    
    ' Return the translated text
    TranslateLatinToCyrillic = Result
End Function



ms-access ms-access-2010
1个回答
0
投票

一系列简单的连续更换就足够了。应首先检查两个(或更多)拉丁字符的组合。

Function TranslateLatinToCyrillic(inputText As String)
DIM R As STRING : R = inputText

R = REPLACE(R , "G‘" , "Ғ")
R = REPLACE(R , "O‘" , "Ў")
R = REPLACE(R , "Sh" , "Ш")
R = REPLACE(R , "A" , "А")
R = REPLACE(R , "B" , "Б")
R = REPLACE(R , "C" , "С")
R = REPLACE(R , "D" , "Д")
R = REPLACE(R , "E" , "Э")
R = REPLACE(R , "F" , "Ф")
R = REPLACE(R , "G" , "Г")
R = REPLACE(R , "H" , "Ҳ")
R = REPLACE(R , "I" , "И")
R = REPLACE(R , "J" , "Ж")
R = REPLACE(R , "K" , "К")
R = REPLACE(R , "L" , "Л")
R = REPLACE(R , "M" , "М")
R = REPLACE(R , "N" , "Н")
R = REPLACE(R , "O" , "О")
R = REPLACE(R , "P" , "П")
R = REPLACE(R , "Q" , "Қ")
R = REPLACE(R , "R" , "Р")
R = REPLACE(R , "S" , "С")
R = REPLACE(R , "T" , "Т")
R = REPLACE(R , "U" , "Ю")
R = REPLACE(R , "V" , "В")
R = REPLACE(R , "X" , "Х")
R = REPLACE(R , "Y" , "Е")

TranslateLatinToCyrillic = R
End Function

或者,使用以下代码以防复制/粘贴到 VBA 编辑器时丢失字符:

Function TranslateLatinToCyrillic(inputText As String)
DIM R AS STRING : R = inputText
    
R = REPLACE(R , "G‘" , ChrW(1170))
R = REPLACE(R , "O‘" , ChrW(1038))
R = REPLACE(R , "Sh" , ChrW(1064))
R = REPLACE(R , "A" , ChrW(1040))
R = REPLACE(R , "B" , ChrW(1041))
R = REPLACE(R , "C" , ChrW(1057))
R = REPLACE(R , "D" , ChrW(1044))
R = REPLACE(R , "E" , ChrW(1069))
R = REPLACE(R , "F" , ChrW(1060))
R = REPLACE(R , "G" , ChrW(1043))
R = REPLACE(R , "H" , ChrW(1202))
R = REPLACE(R , "I" , ChrW(1048))
R = REPLACE(R , "J" , ChrW(1046))
R = REPLACE(R , "K" , ChrW(1050))
R = REPLACE(R , "L" , ChrW(1051))
R = REPLACE(R , "M" , ChrW(1052))
R = REPLACE(R , "N" , ChrW(1053))
R = REPLACE(R , "O" , ChrW(1054))
R = REPLACE(R , "P" , ChrW(1055))
R = REPLACE(R , "Q" , ChrW(1178))
R = REPLACE(R , "R" , ChrW(1056))
R = REPLACE(R , "S" , ChrW(1057))
R = REPLACE(R , "T" , ChrW(1058))
R = REPLACE(R , "U" , ChrW(1070))
R = REPLACE(R , "V" , ChrW(1042))
R = REPLACE(R , "X" , ChrW(1061))
R = REPLACE(R , "Y" , ChrW(1045))
    
TranslateLatinToCyrillic = R
End Function
© www.soinside.com 2019 - 2024. All rights reserved.