| 
 
tireless 
银牌会员
 
     
 
  
  
积分 2025 
发帖 1122 
注册 2007-9-5 
状态 离线
 | 
『楼 主』:
 [已解决]有无GB2312转UTF-8的命令行工具?
 
使用 LLM 解释/回答一下
  
找了下,找到这个 
命令行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 
状态 离线
 | 
 | 
  2008-9-6 13:15 | 
  
 | 
 | 
 
tireless 
银牌会员
 
     
 
  
  
积分 2025 
发帖 1122 
注册 2007-9-5 
状态 离线
 | 
『第 3 楼』:
 
 
使用 LLM 解释/回答一下
  
谢谢。可是怎么测试不成功呢? 
我的记事本保存的好像是 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 楼』:
 
 
使用 LLM 解释/回答一下
  
。。。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 楼』:
 
 
使用 LLM 解释/回答一下
  
我理解错了,抱歉。。。 
 
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 
状态 离线
 | 
 | 
  2008-9-6 23:06 | 
  
 | 
 | 
 
obsolete 
初级用户
 
  
 
  
  
积分 192 
发帖 72 
注册 2005-7-31 
状态 离线
 | 
『第 7 楼』:
 
 
使用 LLM 解释/回答一下
  
我找不到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 
状态 离线
 | 
 | 
  2008-9-6 23:51 | 
  
 | 
 | 
 
HAT 
版主
 
        
 
  
  
积分 9023 
发帖 5017 
注册 2007-5-31 
状态 离线
 | 
 | 
  2008-9-7 00:16 | 
  
 | 
 | 
 
obsolete 
初级用户
 
  
 
  
  
积分 192 
发帖 72 
注册 2005-7-31 
状态 离线
 | 
    『第 10 楼』:
 
 
使用 LLM 解释/回答一下
  
谢谢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; 
	int cchWideChar = MultiByteToWideChar(CP_ACP,0,text,strlen(text),NULL,0) + 1; 
	wchar_t * lpcwStr = new wchar_t; 
	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; 
	WideCharToMultiByte(CP_UTF8,NULL,lpcwStr,-1,lpMultiByteStr,cchWideChar,NULL,FALSE); 
	for (int i = 0; i < strlen(lpMultiByteStr); i++) 
	{ 
		int byte = lpMultiByteStr; 
		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 ]  
 
    
 
 
 
  
附件
1:   urlenc.rar (2008-9-7 02:10, 16.54 KiB,下载次数: 21)
 
 
 |   
 | 
  2008-9-7 01:56 | 
  
 | 
 | 
 
obsolete 
初级用户
 
  
 
  
  
积分 192 
发帖 72 
注册 2005-7-31 
状态 离线
 | 
『第 11 楼』:
 
 
使用 LLM 解释/回答一下
  
这个保留一些常见字符,不转成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); 
 
	int cchWideChar = WideCharToMultiByte(CP_UTF8,NULL,lpcwStr,-1,NULL,0,NULL,FALSE); 
	char * lpMultiByteStr = new char; 
	WideCharToMultiByte(CP_UTF8,NULL,lpcwStr,-1,lpMultiByteStr,cchWideChar,NULL,FALSE); 
 
	for (unsigned int i = 0; i < strlen(lpMultiByteStr); i++) 
	{ 
		char c = lpMultiByteStr; 
		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 KiB,下载次数: 15)
 
 
 |   
 | 
  2008-9-7 11:36 | 
  
 | 
 | 
 
tireless 
银牌会员
 
     
 
  
  
积分 2025 
发帖 1122 
注册 2007-9-5 
状态 离线
 | 
『第 12 楼』:
 
 
使用 LLM 解释/回答一下
  
太谢谢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 
状态 离线
 | 
 | 
  2010-11-9 07:51 | 
  
 |