中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-17 21:07
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]如何将txt文本文件的utf-8编码转换成unicode编码!! 查看 6,712 回复 17
楼 主 [求助]如何将txt文本文件的utf-8编码转换成unicode编码!! 发表于 2007-11-30 10:10 ·  中国 广东 深圳 电信
新手上路
积分 16
发帖 6
注册 2007-11-30 09:41
UID 104222
性别 男
状态 离线
如何将txt文本文件的utf-8编码转换成unicode编码!!

注:很多个文件,不能一个一个处理,得批量处理!!!
我想转换编码的目的是要用Excel直接打开txt文件,但是打开utf-8编码的文本会变成乱码,必须得转换成unicode编码的文本文件才行。可以用记事本打开文本文件,然后“另存为”时选择编码,但是文件太多,不能一个一个操作。看看哪个高手能解决这个问题!!!
2 发表于 2007-11-30 11:17 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
UID 54766
性别 男
来自 上海
状态 离线
@echo off
for /f "delims=" %%a in ('dir /s /b /a-d D:\test\*.txt') do (
call cmd /u /c type "%%a">"%%~dpna.U"
call echo move /y "%%~dpna.U" "%%a"
)
pause
第一高手 第二高手

3 发表于 2007-11-30 11:32 ·  中国 广西 钦州 电信
金牌会员
★★★★
积分 3,687
发帖 1,467
注册 2005-08-08 12:00
UID 44210
状态 离线
好像批处理并不能直接处理utf-8编码的文本
4 发表于 2007-11-30 11:34 ·  中国 广东 深圳 电信
新手上路
积分 16
发帖 6
注册 2007-11-30 09:41
UID 104222
性别 男
状态 离线
不行啊,运行之后,产生了几个.u格式的文件,用记事本打开也都是乱码,不是我想要的结果欧!!!高手再看看!!!
5 发表于 2007-11-30 11:35 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
UID 54766
性别 男
来自 上海
状态 离线
哦是吗我拿ANSI测试的
第一高手 第二高手

6 发表于 2007-11-30 11:44 ·  中国 广东 深圳 电信
新手上路
积分 16
发帖 6
注册 2007-11-30 09:41
UID 104222
性别 男
状态 离线
不行,编码要选择utf-8,我要转换的是utf-8到unicode。你用记事本随便写几句话,然后另存为,选择编码为:utf-f,保存
然后再运行你的程序,你看看吧。

[ Last edited by moonofwell on 2007-11-30 at 11:46 AM ]
7 发表于 2007-11-30 12:05 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
UID 54766
性别 男
来自 上海
状态 离线
既然zh159批处理并不能直接处理utf-8也就没办法了,借助第三方工具吧
第一高手 第二高手

8 发表于 2007-11-30 12:11 ·  中国 广东 深圳 电信
新手上路
积分 16
发帖 6
注册 2007-11-30 09:41
UID 104222
性别 男
状态 离线
第三方工具我找到了,ConvertZ ver 7.40 ,如果能用dos批处理或vbs搞定就更好了!!!(*^_^*)
9 发表于 2007-11-30 13:21 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
UID 54766
性别 男
来自 上海
状态 离线
UTF82Unicode.vbs
[code]
Set objArgs = WScript.Arguments
For I = 0 To objArgs.Count - 1
FileUrl = objArgs(I)
Call WriteToFile(FileUrl, ReadFile(FileUrl, "UTF-8"), "Unicode")
Next
Function ReadFile(FileUrl, CharSet)
Dim Str
Set stm = CreateObject("Adodb.Stream")
stm.Type = 2
stm.mode = 3
stm.charset = CharSet
stm.Open
stm.loadfromfile FileUrl
Str = stm.readtext
stm.Close
Set stm = Nothing
ReadFile = Str
End Function

Function WriteToFile (FileUrl, Str, CharSet)
Set stm = CreateObject("Adodb.Stream")
stm.Type = 2
stm.mode = 3
stm.charset = CharSet
stm.Open
stm.WriteText Str
stm.SaveToFile FileUrl, 2
stm.flush
10 发表于 2007-11-30 13:22 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
UID 54766
性别 男
来自 上海
状态 离线
UTF82Unicode.vbs

Set objArgs = WScript.Arguments
For I = 0 To objArgs.Count - 1
FileUrl = objArgs(I)
Call WriteToFile(FileUrl, ReadFile(FileUrl, "UTF-8"), "Unicode")
Next
Function ReadFile(FileUrl, CharSet)
Dim Str
Set stm = CreateObject("Adodb.Stream")
stm.Type = 2
stm.mode = 3
stm.charset = CharSet
stm.Open
stm.loadfromfile FileUrl
Str = stm.readtext
stm.Close
Set stm = Nothing
ReadFile = Str
End Function

Function WriteToFile (FileUrl, Str, CharSet)
Set stm = CreateObject("Adodb.Stream")
stm.Type = 2
stm.mode = 3
stm.charset = CharSet
stm.Open
stm.WriteText Str
stm.SaveToFile FileUrl, 2
stm.flush
stm.Close
Set stm = Nothing
End Function


@echo off
for /f "delims=" %%a in ('dir /s /b /a-d D:\test\*.txt') do UTF82Unicode.vbs "%%a"
pause

直接替换模式,请先测试后应用
第一高手 第二高手

11 发表于 2007-11-30 13:30 ·  中国 广东 深圳 电信
新手上路
积分 16
发帖 6
注册 2007-11-30 09:41
UID 104222
性别 男
状态 离线
可以了,多谢了哥们儿,真是高手阿!!!
12 发表于 2007-12-07 17:06 ·  中国 上海 黄浦区 电信
初级用户
积分 47
发帖 18
注册 2007-09-08 21:55
UID 96891
性别 男
状态 离线
楼主是utf-8编码转换成unicode
而我的问题是:
如何将UTF-8转成ANSI
还有unicode如何转成ANSI

用批处理文件如何实现?
请高手解答
13 发表于 2007-12-07 20:54 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
UID 54766
性别 男
来自 上海
状态 离线
命令行GB2312,UTF-8,Unicode,BIG5...编码转换工具VBS版
http://www.cn-dos.net/forum/viewthread.php?tid=35986&fpage=1&highlight=

文本文件编码查询工具 QueryCode.vbs
http://www.cn-dos.net/forum/viewthread.php?tid=36012&fpage=1&highlight=
第一高手 第二高手

14 发表于 2007-12-10 15:43 ·  中国 上海 黄浦区 电信
初级用户
积分 47
发帖 18
注册 2007-09-08 21:55
UID 96891
性别 男
状态 离线
谢谢楼上的

[ Last edited by gameyixiu on 2007-12-10 at 03:45 PM ]
15 发表于 2008-05-18 22:10 ·  中国 山东 烟台 联通
新手上路
积分 2
发帖 1
注册 2008-05-18 21:44
UID 119048
性别 男
状态 离线
不错,学习中!
论坛跳转: