Board logo

标题: [文本处理] 如何解决命令提示符中执行结果为乱码的问题? [打印本页]

作者: csuwind    时间: 2011-12-30 17:19     标题: 如何解决命令提示符中执行结果为乱码的问题?

本帖最后由 CrLf 于 2011-12-30 19:28 编辑

你们好,
我的操作系统是正常的win7中文版系统. 我 有一个 base64密文,我解码后在命令提示符下却是乱码, 但是当我用重定向语句将输出 输入到 test.txt中,用记事本打开却不是乱码. 我在复制乱码在网上用在线的那种UTF8乱码转换器可以转换为正常内容.
echo MjAxMeWFg+aXpuaXtuijheWwj+S9k+Wei+Wls+meiy5za2k=| base64.exe -d
2011鍏冩棪鏃惰灏忎綋鍨嬪コ闉?ski

现在的问题来了,就是我 在命令提示符下用 type test.txt后 出现的还是乱码. 于是我用白杨的工具转换: 这下子内容就只剩2011了
echo MjAxMeWFg+aXpuaXtuijheWwj+S9k+Wei+Wls+meiy5za2k=| base64.exe -d | wfr.exe -force -any /encout:UTF-8
2011

我实在茫然了,到底如何才能在windows命令提示图下正确显示才中文, 我也用过所谓的chcp 转换活动页配置等,也用过 那种vbs脚本将编码转换成utf-8基本是,但是依然无法在windows 命令提示符下用type打开

求助啊。

备注: 我的命令提示符是没问题的,可以type打开正常的文件,我查网上他们叫这种为 utf-8乱码,真不懂是什么意思? 请问大家如何可以让我在 命令提示符下正常type他,
另外,当我把乱码重定向到txt中,双击txt打开没问题,如果我在另存为(ANSI),此时就可以用type正常看到内容了。但是我不想每次都手动另存为解决
作者: Demon    时间: 2011-12-30 18:10

CMD默认只能显示GBK编码。
作者: qq2501    时间: 2011-12-30 21:00

我的win7  type表示可以打开中文不乱码啊
作者: Demon    时间: 2011-12-30 22:06

我的win7  type表示可以打开中文不乱码啊
qq2501 发表于 2011-12-30 21:00



    试试UTF-8编码的。
作者: awk    时间: 2011-12-30 22:15

回复 3# qq2501


你试试这个:
  1. echo MjAxMeWFg+aXpuaXtuijheWwj+S9k+Wei+Wls+meiy5za2k=| base64.exe -d >a.txt
  2. type a.txt
复制代码

作者: qq2501    时间: 2011-12-30 23:10

是utf8 without bom 编码所以乱码
作者: Demon    时间: 2011-12-30 23:49

是utf8 without bom 编码所以乱码
qq2501 发表于 2011-12-30 23:10


有BOM又如何。
作者: csuwind    时间: 2011-12-31 20:48

该问题我 已经解决了。
办法是:用网上流传的那种vb脚本改文件编码的办法。但是,网上的vb脚本是吧一种编码改成另一种,比如你可以把GB2312文件拖到vb脚本上改成UTF-8,但是 我这里用了一个小窍门,我用那个vb脚本把目标编码跟原始编码都改成了GB2312,也就是我 用了“把GB2312改为GB2312"呵呵 拗口吧,这里必须用那个脚本的/y选项重新创建一个文件,不能跟原始文件一样,否则依然是乱码。
作者: csuwind    时间: 2011-12-31 20:50

回复 5# awk
用这种办法依然是乱码,你不信可以测试,除非你把文件a.txt打开,然后选择另存为b.txt (ASNI (其实他本身就是ASNI),然后type就可以看到明文而不是乱码,我不知道为什么一定要另存为,虽然不管是否另存为编码都是一样,但是测试结果就是这样
作者: awk    时间: 2011-12-31 21:17

回复 9# csuwind


我是想让3楼的朋友试试
我几年前就信了
作者: Demon    时间: 2011-12-31 21:31

回复  awk
用这种办法依然是乱码,你不信可以测试,除非你把文件a.txt打开,然后选择另存为b.txt (ASNI ( ...
csuwind 发表于 2011-12-31 20:50


a.txt是utf-8编码。
作者: csuwind    时间: 2011-12-31 21:47

回复 11# Demon
a.txt并不是utf-8编码,假如是utf-8,我用网上的编码转换软件转换为gb2312后,发现type后依然是乱码。
我用网上流传的那种vb脚本检测a.txt的编码类型,结果是gb2312,  我用了 vb脚本 把a.txt 以gb2312读入流,再以gb2312写入流到文件,然后type发现就正常了。
作者: Demon    时间: 2011-12-31 22:23

回复  Demon
a.txt并不是utf-8编码,假如是utf-8,我用网上的编码转换软件转换为gb2312后,发现type后依然 ...
csuwind 发表于 2011-12-31 21:47

a.txt是utf-8编码。

我不认为网上流传的检测编码类型的VBS代码是对的,麻烦把你用到的VBS脚本贴出来。
作者: csuwind    时间: 2011-12-31 22:51

回复 13# Demon


    'QueryCode.vbs  BY: fastslz             http://bbs.cn-dos.net    2007-12-06
'支持批量查询,可以放在SendTo扩展应用

set files=WScript.Arguments
if files.Count=0 Then  
   MsgBox "请将要查询的文件拖动到这个文件里!  ", vbInformation, "文件编码查询工具 BY: fastslz"
end if
for i=0 To files.Count-1
    file=files(i)
    Call CheckCode ("   编码为:")
next

Function CheckCode (Usage)
Dim slz
set slz = CreateObject("Adodb.Stream")
slz.Type = 1
slz.Mode = 3
slz.Open
slz.Position = 0
slz.Loadfromfile file
Bin=slz.read(2)
if AscB(MidB(Bin,1,1))=&HEF and AscB(MidB(Bin,2,1))=&HBB Then
Codes="UTF-8"
elseif AscB(MidB(Bin,1,1))=&HFF and AscB(MidB(Bin,2,1))=&HFE Then
Codes="Unicode"
else
Codes="GB2312"
end if
WScript.echo file,Usage,Codes
slz.Close
set slz = Nothing
End Function
作者: Demon    时间: 2011-12-31 22:59

回复  Demon


    'QueryCode.vbs  BY: fastslz             http://bbs.cn-dos.net    2007-12-06
' ...
csuwind 发表于 2011-12-31 22:51


这个代码并不正确,只要没有BOM头它就认为是GB2312。




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2