中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已解决]有无GB2312转UTF-8的命令行工具?
作者:
标题: [已解决]有无GB2312转UTF-8的命令行工具? 上一主题 | 下一主题
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『楼 主』:  [已解决]有无GB2312转UTF-8的命令行工具?

找了下,找到这个
命令行GB2312,UTF-8,Unicode,BIG5编码转换工具VBS版(2007-12更新)

但我不是转换文件。我是想转换剪贴板中的GB2312到UTF-8,然后进行Google中译英...

英译中可以直接用网址:
"http://translate.google.com/translate_t?hl=en&ie=UTF8&text=%S&langpair=en%7Czh-CN"

可是中译英......该怎么办?

[ Last edited by tireless on 2008-9-6 at 11:58 PM ]

2008-9-5 23:18
查看资料  发短消息 网志   编辑帖子  回复  引用回复
knoppix7
银牌会员





积分 1287
发帖 634
注册 2007-5-2
来自 cmd.exe
状态 离线
『第 2 楼』:  

CONCMD

2008-9-6 13:15
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 3 楼』:  

谢谢。可是怎么测试不成功呢?
我的记事本保存的好像是 GBK,而 Google 的中译英不是将中文变为 UTF-8 吗?
转换后字符没有变:

ConCmd.exe /o:utf8 3.txt 31.txt

3.txt 的内容是“字符串”。转换后的 31.txt 的内容还是“字符串”。。

2008-9-6 14:43
查看资料  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 4 楼』:  

。。。UTF8是编码格式,记事本支持这个编码就直接给你翻译成你能看的懂的字符串。。。IE里面的utf8貌似是将汉字转换成16进制那种吧。



S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
2008-9-6 22:47
查看资料  发短消息 网志   编辑帖子  回复  引用回复
obsolete
初级用户





积分 192
发帖 72
注册 2005-7-31
状态 离线
『第 5 楼』:  

我理解错了,抱歉。。。

ie高级选项有个设置“总是以utf-8发送url”,这里汉字变成%ef%ad这种形式有两个过程,第一是utf-8编码,第二是字节码换作16进制。

记事本中ANSI编码是一种本地编码,它是根据本地的默认编码,在中文操作系统下,它是GBK编码。

[ Last edited by obsolete on 2008-9-6 at 11:15 PM ]

2008-9-6 23:05
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
obsolete
初级用户





积分 192
发帖 72
注册 2005-7-31
状态 离线
『第 6 楼』:  

百度搜索 "url 编码"

2008-9-6 23:06
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
obsolete
初级用户





积分 192
发帖 72
注册 2005-7-31
状态 离线
『第 7 楼』:  

我找不到concmd这个工具,如果楼主确实得到了一个UTF-8编码的txt文件,可以打开,另存,看一下默认选中的是不是UTF-8编码,如果是那就对了。

还需要ultraedit,打开这个UTF-8编码的文件,ctrl+H,去除前三个字节,其它字节前面加上%,就是URL编码的结果了。

文件头的前三个字节就是传说中的BOM,大概是byte-order-mark。

2008-9-6 23:30
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
obsolete
初级用户





积分 192
发帖 72
注册 2005-7-31
状态 离线
『第 8 楼』:  

功力不够。。。java里两句就搞定,c不知道怎么弄。
楼主的问题应该可以换个角度解决?

http://translate.google.com/translate_t?hl=en&ie=GBK&text=被自杀&langpair=zh-CN%7Cen#



http://translate.google.com/translate_t?ie=GBK&text=被自杀&sl=zh_CN&tl=en#

[ Last edited by obsolete on 2008-9-6 at 11:58 PM ]

   此帖被 +18 点积分       点击查看详情   
评分人:【 HAT 分数: +10  时间:2008-9-7 00:16
评分人:【 tireless 分数: +8  时间:2008-9-7 19:48


2008-9-6 23:51
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 9 楼』:  Re 8楼

学习了



2008-9-7 00:16
查看资料  发短消息 网志   编辑帖子  回复  引用回复
obsolete
初级用户





积分 192
发帖 72
注册 2005-7-31
状态 离线
『第 10 楼』:  

谢谢HAT~~

试着用c++写了一个,接受一个字符串参数,如有问题麻烦大家修正
#include "stdafx.h"
#include "iostream.h"
#include "windows.h"
#include "winnls.h"
#include "string"

using namespace std;

#pragma comment(lib, "kernel32.lib")

int main(int argc, char* argv[])
{
        if (argc != 2)
        {
                return 1;
        }

        char * text = argv[1];
        int cchWideChar = MultiByteToWideChar(CP_ACP,0,text,strlen(text),NULL,0) + 1;
        wchar_t * lpcwStr = new wchar_t[cchWideChar];
        ZeroMemory(lpcwStr, sizeof(wchar_t) * cchWideChar);
        MultiByteToWideChar(CP_ACP,0,text,strlen(text),lpcwStr,cchWideChar);

        cchWideChar = WideCharToMultiByte(CP_UTF8,NULL,lpcwStr,-1,NULL,0,NULL,FALSE);
        char * lpMultiByteStr = new char[cchWideChar];
        WideCharToMultiByte(CP_UTF8,NULL,lpcwStr,-1,lpMultiByteStr,cchWideChar,NULL,FALSE);
        for (int i = 0; i < strlen(lpMultiByteStr); i++)
        {
                int byte = lpMultiByteStr[i];
                byte = byte >=0 ? byte : 256 + byte;
                cout << '%' << hex << byte;
        }
        cout << endl;
        delete lpcwStr;
        delete lpMultiByteStr;
        return 0;
}
[ Last edited by obsolete on 2008-9-7 at 02:09 AM ]

   此帖被 +8 点积分        点击查看详情   
评分人:【 tireless 分数: +8  时间:2008-9-7 19:48


附件 1: urlenc.rar (2008-9-7 02:10, 16.54 K,下载次数: 21)
2008-9-7 01:56
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
obsolete
初级用户





积分 192
发帖 72
注册 2005-7-31
状态 离线
『第 11 楼』:  

这个保留一些常见字符,不转成16进制形式
#include "stdafx.h"
#include "iostream.h"
#include "atlbase.h"

int main(int argc, char* argv[])
{
        if (argc != 2)
        {
                return 1;
        }

        USES_CONVERSION;
        wchar_t * lpcwStr = A2W(argv[1]);

        int cchWideChar = WideCharToMultiByte(CP_UTF8,NULL,lpcwStr,-1,NULL,0,NULL,FALSE);
        char * lpMultiByteStr = new char[cchWideChar];
        WideCharToMultiByte(CP_UTF8,NULL,lpcwStr,-1,lpMultiByteStr,cchWideChar,NULL,FALSE);

        for (unsigned int i = 0; i < strlen(lpMultiByteStr); i++)
        {
                char c = lpMultiByteStr[i];
                if (c >= 'a' && c <= 'z'
                        || c >='A' && c <= 'Z'
                        || c >= '0' && c <= '9'
                        || c == '/'
                        || c == ':'
                        || c == '-'
                        || c == '_'
                        || c == '.'
                        || c == '*'
                        || c == '?'
                        || c == '&'
                        || c == '=')
                {
                        cout << c;
                } else if (c == ' ')
                {
                        cout << '+';
                } else
                {
                        cout << '%' << hex << (int) (unsigned char) c;
                }
        }
        cout << endl;

        delete lpMultiByteStr;
        return 0;
}
[ Last edited by obsolete on 2008-9-7 at 11:54 AM ]

附件 1: urlenc2.rar (2008-9-7 11:41, 16.63 K,下载次数: 15)
2008-9-7 11:36
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 12 楼』:  

太谢谢obsolete了。

这下 hoekey 就能实现用快捷键来划词翻译了。

Update: 中译英也可这样:
http://translate.google.com/translate_t?#zh-CN%7cen%7c测试文字


[ Last edited by tireless on 2009-2-7 at 16:58 ]

2008-9-7 19:50
查看资料  发短消息 网志   编辑帖子  回复  引用回复
greenworld
初级用户





积分 86
发帖 45
注册 2007-7-26
状态 离线
『第 13 楼』:  

obsolete老大,太感谢了,这个强烈支持

2010-11-9 07:51
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: