我尝试使用一个带字符串的函数,并返回相同的字符串而没有任何带重音的字母。相反,重音字母应该返回没有重音的相同字母。此功能无效:
function StripAccents(str)
accent = "ÈÉÊËÛÙÏÎÀÂÔÖÇèéêëûùïîàâôöç"
noaccent = "EEEEUUIIAAOOCeeeeuuiiaaooc"
currentChar = ""
result = ""
k = 0
o = 0
FOR k = 1 TO len(str)
currentChar = mid(str,k, 1)
o = InStr(accent, currentChar)
IF o > 0 THEN
result = result & mid(noaccent,k,1)
ELSE
result = result & currentChar
END IF
NEXT
StripAccents = result
End function
testStr = "Test : à é À É ç"
response.write(StripAccents(testStr))
这是使用上述结果:
Test : E E Eu EE E
答案 0 :(得分:1)
忽略可能的编码问题 - 您必须更改
result = result & mid(noaccent,k,1)
到
result = result & mid(noaccent,o,1)
答案 1 :(得分:0)
您应该首先进行分解规范化(NFD)。我想你可以在VBA中使用WinAPI函数NormalizeString(https://msdn.microsoft.com/en-us/library/windows/desktop/dd319093(v=vs.85).aspx)调用。然后,您可以删除重音代码点。
答案 2 :(得分:0)
我尝试了添加了更正的示例代码
给予:
accent = "àèìòùÀÈÌÒÙäëïöüÄËÏÖÜâêîôûÂÊÎÔÛáéíóúÁÉÍÓÚðÐýÝãñõÃÑÕšŠžŽçÇåÅøØ"
noaccent = "aeiouAEIOUaeiouAEIOUaeiouAEIOUaeiouAEIOUdDyYanoANOsSzZcCaAoO"
现在我意识到还有更多要处理的东西,即
æ
Æ
ß
这些需要首先进行转换,方法是将其简单替换为ae
AE
和ss
然后,除了在代码中没有<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
或类似内容很重要之外,其他方法都可以正常工作
不过,标头中包含meta charset="UTF-8"
并不是什么大问题,它可以很好地转换。
因此,如果页面上需要包含<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
的代码,我对此一无所知
感谢代码更加环保,对于处理常见的变音符号非常有用:-)