vb6中TXT文档编码转换源代码求助 100
我现在想把TXT文档中最常见的ANSI编码转换成UNIcode,代码如何写?比如我现在有个TEXT文档,读起来,然后保存成Unicode2.txt如何做?完整的格式好么?...
我现在想把TXT文档中最常见的ANSI编码转换成UNIcode,代码如何写?
比如我现在有个TEXT文档,读起来,然后保存成Unicode2.txt
如何做?
完整的格式好么?
最好把全部的源文件复制给我好么? 展开
比如我现在有个TEXT文档,读起来,然后保存成Unicode2.txt
如何做?
完整的格式好么?
最好把全部的源文件复制给我好么? 展开
1个回答
展开全部
StrConv 函数
语法为:StrConv(待转换字串, 转换格式)
转换格式:
vbUnicode 将 Ansi 字串转换为 Unicode
vbFromUnicode 将 Unicode 字串转换为 Ansi
====================
补充回答:
看看下面的基本范例您应该就会对 VB 的字串处理方式有些概念。
Private Sub Command1_Click ()
Dim sUnicode As String
Dim sAnsi As String
' Unicode 运算
sUnicode = "王小明,A123456789,651023,上海市中山路100号,(02)2345678"
Debug.Print Len(sUnicode) ' 返回 44
Debug.Print Mid$(sUnicode, 5, 10) ' 返回 A123456789
Debug.Print Instr(sUnicode, "上海市") ' 返回 23
' 将 Unicode 字串转成 Ansi
sAnsi = StrConv(sUnicode, vbFromUnicode)
' Ansi 运算
Debug.Print LenB(sAnsi) ' 返回 54
Debug.Print MidB$(sAnsi, 8, 10) ' 返回 ?????,因为忘了转回 Unicode
Debug.Print StrConv(MidB$(sAnsi, 8, 10), vbUnicode) ' 返回 A123456789,请注意转
回 Unicode 的动作一定要做
Debug.Print InStrB(sAnsi, StrConv("上海市", vbFromUnicode)) ' 返回 23, 不要忘了
要把"上海市"也转成 Ansi,否则会找不到
End Sub
================
读入文本文件
在 VB 的小技巧中,有一个是快速读文件法:
Private Sub Command1_Click ()
Dim sFile As String
Open "C:filename.txt" For Input As #1
sFile = Input$(LOF(1), #1)
Close #1
End Sub
但是很不幸地,如果你读取的文件内含中文字,那上面这段程序会出现 Input pastend of
file 的错误。因为 LOF 返回的是文件的 byte 数,而 Input 函数读取的是字符数,由于
文件内含中文,因此文件中的字符数将会小于 byte 数,于是就发生错误了。
要解决这个问题,我们就要用到 StrConv 和 InputB 这两个函数了:
Private Sub Command1_Click ()
Dim sFile As String
Open "C:filename.txt" For Input As #1
sFile = StrConv(InputB$(LOF(1), #1), vbUnicode)
Close #1
End Sub
上面修正程序先用 InputB 将文件读进来,不过使用 InputB 所读入的文件是 Ansi格式的,
所以要再用 StrConv 转成 Unicode 才行。
================
VB我不是太熟 这些是COPY了人家的 有这些例子应该够帮到你了 如果这样还不够 那你其实应该去找本VB的教材好好看看了
忘了哪位老外大牛说过 程序就是"算法 + 字符串处理"
字符串的处理是每门语言最基本的 不要疏忽大意
语法为:StrConv(待转换字串, 转换格式)
转换格式:
vbUnicode 将 Ansi 字串转换为 Unicode
vbFromUnicode 将 Unicode 字串转换为 Ansi
====================
补充回答:
看看下面的基本范例您应该就会对 VB 的字串处理方式有些概念。
Private Sub Command1_Click ()
Dim sUnicode As String
Dim sAnsi As String
' Unicode 运算
sUnicode = "王小明,A123456789,651023,上海市中山路100号,(02)2345678"
Debug.Print Len(sUnicode) ' 返回 44
Debug.Print Mid$(sUnicode, 5, 10) ' 返回 A123456789
Debug.Print Instr(sUnicode, "上海市") ' 返回 23
' 将 Unicode 字串转成 Ansi
sAnsi = StrConv(sUnicode, vbFromUnicode)
' Ansi 运算
Debug.Print LenB(sAnsi) ' 返回 54
Debug.Print MidB$(sAnsi, 8, 10) ' 返回 ?????,因为忘了转回 Unicode
Debug.Print StrConv(MidB$(sAnsi, 8, 10), vbUnicode) ' 返回 A123456789,请注意转
回 Unicode 的动作一定要做
Debug.Print InStrB(sAnsi, StrConv("上海市", vbFromUnicode)) ' 返回 23, 不要忘了
要把"上海市"也转成 Ansi,否则会找不到
End Sub
================
读入文本文件
在 VB 的小技巧中,有一个是快速读文件法:
Private Sub Command1_Click ()
Dim sFile As String
Open "C:filename.txt" For Input As #1
sFile = Input$(LOF(1), #1)
Close #1
End Sub
但是很不幸地,如果你读取的文件内含中文字,那上面这段程序会出现 Input pastend of
file 的错误。因为 LOF 返回的是文件的 byte 数,而 Input 函数读取的是字符数,由于
文件内含中文,因此文件中的字符数将会小于 byte 数,于是就发生错误了。
要解决这个问题,我们就要用到 StrConv 和 InputB 这两个函数了:
Private Sub Command1_Click ()
Dim sFile As String
Open "C:filename.txt" For Input As #1
sFile = StrConv(InputB$(LOF(1), #1), vbUnicode)
Close #1
End Sub
上面修正程序先用 InputB 将文件读进来,不过使用 InputB 所读入的文件是 Ansi格式的,
所以要再用 StrConv 转成 Unicode 才行。
================
VB我不是太熟 这些是COPY了人家的 有这些例子应该够帮到你了 如果这样还不够 那你其实应该去找本VB的教材好好看看了
忘了哪位老外大牛说过 程序就是"算法 + 字符串处理"
字符串的处理是每门语言最基本的 不要疏忽大意
参考资料: http://post.baidu.com/f?kz=75346031
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |