VB,Input打开的中文日文韩文文本文件,适宜utf-8,ansi编码,不宜unicode编码

作者:minglang.org

vb中,input所处理的含有中文日文韩文字符的文本文件,适宜ansi,utf-8编码,不宜unicode编码。先从处理仅含英语字母的文件谈起。

明朗单词通自带的单词表文件有两种格式,其中一种后缀为txt,每行写一个单词,开头是“minglang.org”:
minglang.org
sail
seed
bright
arrow

明朗单词通通过以下函数,把上述文件读入一个数组:
Function wordfromlist()
Dim a As String
Dim i As Integer
On Error Resume Next
Open newlibname For Input As #1
Input #1, a
Do While Not EOF(1)
Input #1, a
i = i + 1: wstr(i) = a
Loop
Close #1
wstrmax = i
End Function

其中newlibname是一个单词表文件的地址。wstr()是单词数组。wstrmax是单词个数。
input,每次读取,遇到分隔符(逗号,分行符)就停下来。明朗自带的单词表文件是每行写一个单词,所以,这个程序中“input” 代之以“line input”,似乎更合理。
上述单词表文件,只含英文字母,不含其它语种的文字。存为ansi,utf-8,unicode编码都可以。只是存为unicode编码时,第一行的首字母会被吃掉。

对于用户自建的含英语单词的文件,用于导入单词学习任务,格式没有上述限定,单词与单词只要不连在一起就行(这相当于没有要求,用户不会把say speek两个单词写成sayspeek)。允许文件中含有中文韩文这些非英文字符。非英文字母会被忽略。

这是用另一个函数处理的。函数中也用到input。原以为,所处理的文件,unicode编码也是可以的。其实不然。实验发现,文件中,比如含有“明朗”这两个unicode字符时,不妨碍;但含有“通”这个unicode字符时就不行:此字符之后的所有字符将被视为没有分隔符。

这个用途的用户文件,ansi,utf-8编码都可以。好在,用户新建的文本文件,默认都是ansi编码;从其他途径获得的文本文件一般都是ansi编码。一般不会造成问题。

至于明朗单词通用户修改单词翻译的文件translations.txt编码涉及到的问题,另文记录。

Loading Likes...

发表评论

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