标题: [求助]如何将txt文本文件的utf-8编码转换成unicode编码!!
[打印本页]
作者: moonofwell
时间: 2007-11-30 10:10
标题: [求助]如何将txt文本文件的utf-8编码转换成unicode编码!!
如何将txt文本文件的utf-8编码转换成unicode编码!!
注:很多个文件,不能一个一个处理,得批量处理!!!
我想转换编码的目的是要用Excel直接打开txt文件,但是打开utf-8编码的文本会变成乱码,必须得转换成unicode编码的文本文件才行。可以用记事本打开文本文件,然后“另存为”时选择编码,但是文件太多,不能一个一个操作。看看哪个高手能解决这个问题!!!
作者: fastslz
时间: 2007-11-30 11:17
@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
作者: zh159
时间: 2007-11-30 11:32
好像批处理并不能直接处理utf-8编码的文本
作者: moonofwell
时间: 2007-11-30 11:34
不行啊,运行之后,产生了几个.u格式的文件,用记事本打开也都是乱码,不是我想要的结果欧!!!高手再看看!!!
作者: fastslz
时间: 2007-11-30 11:35
哦是吗我拿ANSI测试的
作者: moonofwell
时间: 2007-11-30 11:44
不行,编码要选择utf-8,我要转换的是utf-8到unicode。你用记事本随便写几句话,然后另存为,选择编码为:utf-f,保存
然后再运行你的程序,你看看吧。
[
Last edited by moonofwell on 2007-11-30 at 11:46 AM ]
作者: fastslz
时间: 2007-11-30 12:05
既然zh159批处理并不能直接处理utf-8也就没办法了,借助第三方工具吧
作者: moonofwell
时间: 2007-11-30 12:11
第三方工具我找到了,ConvertZ ver 7.40 ,如果能用dos批处理或vbs搞定就更好了!!!(*^_^*)
作者: fastslz
时间: 2007-11-30 13:21
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
作者: fastslz
时间: 2007-11-30 13:22
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
直接替换模式,请先测试后应用
作者: moonofwell
时间: 2007-11-30 13:30
可以了,多谢了哥们儿,真是高手阿!!!
作者: gameyixiu
时间: 2007-12-7 17:06
楼主是utf-8编码转换成unicode
而我的问题是:
如何将UTF-8转成ANSI
还有unicode如何转成ANSI
用批处理文件如何实现?
请高手解答
作者: fastslz
时间: 2007-12-7 20:54
命令行GB2312,UTF-8,Unicode,BIG5...编码转换工具VBS版
http://www.cn-dos.net/forum/view ... ge=1&highlight=
文本文件编码查询工具 QueryCode.vbs
http://www.cn-dos.net/forum/view ... ge=1&highlight=
作者: gameyixiu
时间: 2007-12-10 15:43
谢谢楼上的
[
Last edited by gameyixiu on 2007-12-10 at 03:45 PM ]
作者: joson
时间: 2008-5-18 22:10
不错,学习中!
作者: knoppix7
时间: 2008-5-18 23:09
论坛有。。。自己搜索.
作者: mkd
时间: 2008-6-2 15:26
使用方法:
點兩下 或 拉文件進來
如果用這兩種方法以外的其他方法來使用,可能會發生錯誤
@echo off
if "%~1" == "" goto main
set "wfiles=%cmdcmdline:"=%"
call set "wfiles=%%wfiles:*%~d0=%%"
call set "wfiles=%%wfiles:*%~d1=%%"
call set "wfiles=%%wfiles: %~d1=" "%~d1%%"
set wfiles="%~d1%wfiles%"
if "%cmdcmdline:~0,3%" == "cmd" call :ddd %wfiles%
if not "%cmdcmdline:~0,3%" == "cmd" set wfiles=%*
goto main
:ddd
cd/d "%~dp1"
goto :eof
::--------------------------------------------------------------
:main
echo 1 GB2312
echo 2 Big5
echo 3 Shift_JIS
echo 4 EUC-KR
echo 5 UTF-8
echo 6 Unicode
echo.
echo A --^> B
echo A=? (1-6)
set /p aaa=
echo B=? (1-6)
set /p bbb=
echo %aaa%|findstr /be "[1-6]" >nul ||goto :eof
echo %bbb%|findstr /be "[1-6]" >nul ||goto :eof
if "%aaa%" == "%bbb%" goto :eof
if not defined wfiles set /p wfiles=Files???
if not defined wfiles goto :eof
echo Set objFSO = CreateObject("Scripting.FileSystemObject") > MakeBOM.vbs
echo Set objFile = objFSO.CreateTextFile("Unicode.BOM",,true) >> MakeBOM.vbs
cscript //Nologo MakeBOM.vbs
md After_Convert\tmp
:loop
set vvv=%aaa%
if "%aaa%" == "6" set vvv=%bbb%
for /f "tokens=%vvv%" %%a in ("936 950 932 949 65001") do (
reg add "HKCU\Console\%%SystemRoot%%_System32_cmd.exe" /v CodePage /t REG_DWORD /d %%a /f >nul
)
if not "%aaa%" == "6" (
if not "%bbb%" == "6" (
start /wait /min cmd /u /c "for %%a in (%%wfiles%%) do copy Unicode.BOM tmpfile.tmp&type "%%~fa" >> tmpfile.tmp&move /y tmpfile.tmp After_Convert\tmp\"%%~nxa""
set aaa=6
set wfiles=After_Convert\tmp\*
goto loop
)
)
if "%bbb%" == "6" (
start /wait /min cmd /u /c "for %%a in (%%wfiles%%) do copy Unicode.BOM tmpfile.tmp&type "%%~fa" >> tmpfile.tmp&move /y tmpfile.tmp After_Convert\"%%~nxa""
) else (
start /wait /min cmd /c "for %%a in (%%wfiles%%) do type "%%~fa" > After_Convert\"%%~nxa"")
reg delete "HKCU\Console\%%SystemRoot%%_System32_cmd.exe" /v CodePage /f >nul
del MakeBOM.vbs
del Unicode.BOM
rd After_Convert\tmp /s /q
start After_Convert
[
Last edited by mkd on 2008-6-2 at 10:35 PM ]
作者: bjjgq
时间: 2009-12-2 17:51
高手,我真是太吃惊了,学习也学不过来了