VB,Binary方式打开的文本文件适宜Unicode编码,Cstr(),CStrConv()

作者:minglang.org

目前明朗单词通的简体中文、繁体中文、日文、韩文、英文版本合为一个版本。这给版本维护带来方便。也给用户带来方便,比如母语为繁体中文的用户,学习比如SAT单词时,可以使用英语界面,这时单词的英文定义代替译文;用户也可以切换到日文界面,看看英文单词的日文翻译。

用户随便选择哪个语言界面,都能正确显示译文,不会出现乱码。下面是例句译文的处理代码:
dim in as long
dim mysound1() as byte
dim wenben() as string
dim sentencecn() as string
If tw = 0 Then Open App.path + “\lis\sen0.txt” For Binary As #1
ln = LOF(1)
ReDim mysound1(ln)
Get #1, , mysound1
Close #1
temz = CStr(mysound1)
wenben = Split(temz, vbCrLf)
For i = 1 To UBound(wenben)
sentencecn(i) = wenben(i)
Next i

例句的简体中文译文存于一个unicode编码文本文件sen0.txt内。程序load期间,读入,存于一个数组sentencecn()。
CStr(mysound1),将任意类型转为字符串。

如果,简体中文译文文件sen0.txt使用简体中文操作系统上的ansi编码,繁体中文译文文件sen1.txt使用繁体中文操作系统上的ansi编码,那么 CStr(mysound1)必须改为 CStrConv(mysound1,VbUnicode)。这样做,有缺点:在简体中文操作系统,正常显示简体中文,不能正常显示繁体中文,出现乱码。
备注:如果mysound1 来源于ansi编码文件,那么,即使文件中只包含英文字符,也需要CStr(mysound1,vbUnicode),才能正常显示英文。

用户文件user_definitions.txt user_translations.txt user_sentences, 也是unicode编码。使用的处理代码,类似上面。这样用户即使更改操作系统的语言,他/她自己修改过的文件仍然可以使用。

Loading Likes...

发表评论

电子邮件地址不会被公开。