由于德语的计算机编码为西欧语言,国际标准为ISO-8859-1,所以在中文系统中用纯文本无法正确显示变音字符,必须将德文文字转换为Unicode编码才能在文字编辑工具中正常显示。如果变音字符直接用中文编码保存再次打开就会变成乱码。特别是在使用默认GB2312的浏览器查看没有给出语言编码的德文网页时也会出现乱码。
乱码的解决方案有2种。
1. 如果必要,使用Unicode(UTF-8)保存德文文本或者使用支持Unicode的编辑器编辑和保存。
2. 修改变音字符为转义符
ü 转化成üä转化成äö 转化成öß转化成ßÜ转化成ÜÖ转化成ÖÄ转化成Ä
用两个函数,在保存进数据库时转义后保存,在编辑器显示再还原
Public Function tihuandeyu(ByVal str As String) As String
str = Replace(str, "ü", "ü")
str = Replace(str, "ä", "ä")
str = Replace(str, "ö", "ö")
str = Replace(str, "ß", "ß")
str = Replace(str, "Ü", "Ü")
str = Replace(str, "Ö", "Ö")
str = Replace(str, "Ä", "Ä")
Return str
End Function
Public Function huanyuandeyu(ByVal str As String) As String
str = Replace(str, "ü", "ü")
str = Replace(str, "ä", "ä")
str = Replace(str, "ö", "ö")
str = Replace(str, "ß", "ß")
str = Replace(str, "Ü", "Ü")
str = Replace(str, "Ö", "Ö")
str = Replace(str, "Ä", "Ä")
Return str
End Function
3、针对ASP.NET版的CMS,可以在WEB.CONFIG中直接约定<globalization>中的编码格式为ISO-8859-1 但这样下来所有的后台全部显示的中文为乱码,要修改所有的汉字,我们也得会德语才行。这样下来客户看到的也将是标准的德文。
4、通过调整浏览器显示中的编码可看到德文,但每次都得手工调整页面编码,不大显示。另外不知道德国的用户是否打开是乱码,是否需要指定编码?这个有待将来考证
最后通过在WEB.CONFIG中节点强制约定指定某个页面编码格式,前台段显示的主要是四个页面,直接约定编码。另外在path中是否能批量约定,因为页面少未做查询。
<location path="list_cms.aspx">
<system.web>
<globalization fileEncoding="ISO-8859-1" requestEncoding="ISO-8859-1" responseEncoding="ISO-8859-1" />
</system.web>
</location>
<location path="index_cms.aspx">
<system.web>
<globalization fileEncoding="ISO-8859-1" requestEncoding="ISO-8859-1" responseEncoding="ISO-8859-1" />
</system.web>
</location>
<location path="show_cms.aspx">
<system.web>
<globalization fileEncoding="ISO-8859-1" requestEncoding="ISO-8859-1" responseEncoding="ISO-8859-1" />
</system.web>
</location>
<location path="ly.aspx">
<system.web>
<globalization fileEncoding="ISO-8859-1" requestEncoding="ISO-8859-1" responseEncoding="ISO-8859-1" />
</system.web>
</location>