求助将GB2312转换为汉字

Felven 2011-07-04 05:49:15
在进行页面浏览的时候,能够看到地址栏中的URL很少有显示中文字符的,全是符号和英文字母,这在一定程度上说明了为什么中国的软件不发达(为了与国外接轨,就需要涉及到字符转换,这是一个很头疼的问题,很多时间往往就花在字符格式转换上面了,杯具)。



如今在做一个字符转换的小程序,将HTTP请求中的编码还原为汉字。在CSDN上面搜索了老半天,只找到将UTF8转换为汉字的,而没有GB2312转换为汉字的,搞的人很郁闷,不知道GB2312能不能转换,头疼。

求助各位大牛,能否给一个GB2312转换为汉字的程序,前提是用C/C++写的。感谢。



附,这是UTF8转换为汉字的

#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <Windows.h>
using namespace std;


int main()
{

char s[]="%E6%B1%89%E5%AD%97%E7%BC%96%E7%A0%81";
int len = strlen(s);
char* temps = new char[len+1];
temps[len] = '\0';

int temps_pos = 0;
int i;

//去掉%号
for ( i = 0;i<len;++i)
{
if (s[i] != '%')
{
temps[temps_pos] = s[i];
temps_pos++;
}
}
temps[temps_pos] = '\0';
cout<<temps<<endl;

int temps_len = strlen(temps);

int UTF8len = temps_len/2;
char* UTF8str = new char[UTF8len+1];

UTF8str[UTF8len] = '\0';
//把字符转换成数字,得到真实的UTF8串
for ( i = 0;i<UTF8len*2;)
{
char convert[3] = {0};
convert[0] = temps[i++];
convert[1] = temps[i++];
char *end;
int tempint = strtol(convert,&end,16);
UTF8str[i/2-1] = tempint;
}

//UTF8转换到UTF16
int wcslen = ::MultiByteToWideChar(CP_UTF8,NULL,UTF8str,UTF8len,NULL,0);

wchar_t* wszString = new wchar_t[wcslen + 1];

::MultiByteToWideChar(CP_UTF8,NULL,UTF8str ,UTF8len,wszString,wcslen);

wszString[wcslen] = L'\0';

//设置区域
std::wcout.imbue(std::locale("CHS"));
wcout<<wszString<<endl;

delete []temps;
delete []UTF8str;
delete []wszString;

return 0;
}








...全文
333 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
就想叫yoko 2011-07-05
  • 打赏
  • 举报
回复
学习~~
luciferisnotsatan 2011-07-05
  • 打赏
  • 举报
回复
windows下,setlocale设为简中区域,ANSI对应的就是GB2312编码。也就是说
char sz[] = "求助将GB2312转换为汉字";
这个多字节对应的就是GB2312。cout就能输出
xbt746 2011-07-05
  • 打赏
  • 举报
回复
gb2312本来就是汉字啊。utf转gb231在windows下有multibytetounicode和unicodetomultibyte
不知道是不是你想要的
Felven 2011-07-05
  • 打赏
  • 举报
回复
差不多是这个意思,不过是不是并不需要转换?在机器中反正都是按照二进制位进程存储的
[Quote=引用 1 楼 healer_kx 的回复:]
GB2312就是一种汉字编码,你问的是汉字怎么显示出来吧?
[/Quote]
一路博客 2011-07-04
  • 打赏
  • 举报
回复
前几天找了些资料也都是UTF-8,关注下
healer_kx 2011-07-04
  • 打赏
  • 举报
回复
GB2312就是一种汉字编码,你问的是汉字怎么显示出来吧?
┌─ 极度学习 ───────────────────────┐ │ │ 感谢你使用 eWebEditor在线文本编辑器王志峰修改版 │ 本代码完全公开和免费,你可以任意复制、传播、修改和使用, │ 但不得公开发表代码 不得用做商业用途,不得向其他使用者收费。 │ │ │ 修改者:王志峰 │ 2009-06-1 │ └────────────────── ───┘ 特此说明:此程序修改自 “eWebEditor在线文本编辑器飞鱼修改版” (网站地址:http://www.fiyu.net) ---------------------------------------------------------------- 程序名称: eWebEditor在线文本编辑器王志峰修改版v0.1.4 软件类别: JSP源码 / 在线文本编辑器 软件语言: 简体中文 授权方式: 免费版 系统平台: JSP+XML+BEAN 程序修改: 王志峰 程序简介: eWebEditor是基于网页的、所见即所得的在线HTML编辑器。她能够在网页上实现许多桌面编辑软件(如:Word)所具有的强大可视编辑功能;现在您使用的是来自eWebSoft在线文本编辑器飞鱼修改版(JSP) 针对使用中发现的一些问题所进行的修订版本。 ---------------------------------------------------------------- 【程序主要功能】 所见即所得 即通过编辑器编辑的文字、图片等HTML标记输出到页面的效果和编辑时显示的效果一致,让使用者方便地对编辑的内容进行修改、排版等。 自动转换为HTML代码 在编辑状态编辑的文字、图片等内容都在后台自动转换为可被浏览器识别的HTML标记语言,使用者更能在代码状态在对代码标记进行修改。 简单易用 编辑器的编辑及使用方法与FrontPage、Dreamweaver等著名主页制作软件类似。无需任何HTML语法知识、儍瓜式的操作让即使没有主页制作经验的使用者也能快速上手。 方便快捷 使用所见即所得的编辑器能快捷、方便地编辑出效果一流的图文效果,如果使用纯手工编写代码的方法编辑则需要浪费大量时间及精力。 ---------------------------------------------------------------- 【安装使用】 部署方式: 1、把文件夹下除WEB-INF文件夹的全部文件复制到您的网站根目录下; 2、把WEB-INF文件夹下的style.xml和button.xml复制到网站根目录的WEB-INF下; 3、把WEB-INF文件夹下的lib目录中的jar文件复制到网站根目录的WEB-INF的lib目录; 4、把WEB-INF文件夹下的class目录中的文件复制到网站根目录的WEB-INF的class目录; 5、把WEB-INF文件夹下的web.xml文件中的一下部分粘贴到网站根目录的WEB-INF的web.xml中; defaultroot debugjsp Added to compile JSPs with debug info org.apache.jasper.servlet.JspServlet classdebuginfo true 3 debugjsp *.jsp 6、重新启动服务器即可。 演示应用:请参考index.jsp和submit.jsp。 界面修改:一般只修改/WEB-INF目录下面的style.xml和button.xml就可以了。 ==================================================== 上传图片路径设置: //此处设置上传文件保存路径,注意路径要由ROOT开始===3处====================== //修改此处需修改WEB-INF/Style.xml文件对应处/UploadFile/ //修改此处需修改eWebEditor.jsp文件对应处 //修改此处需修改upload.jsp文件对应处 例如要传到根目录的/www/images/upload/下面: upload.jsp中 String sUploadFilePath="/www/images/upload/"; Style.xml中 /www/images/upload/ eWebEditor.jsp 中 String sUploadFilePath="/www/images/upload/"; 这样就好了。 建议: 删除演示文件index.jsp和submit.jsp 有什么问题欢迎到深度论坛来提! ===================================== 【版本更新说明】 ·修订图片、flash、多媒体以及附件上传后路径问题; 【特别感谢】 · “eWebSoft在线文本编辑器飞鱼修改版”作者(网站地址:http://www.fiyu.net) · 网友 QQ:Stone.Sun (http://ff.139l.com) 【声明】 您可以自由复制、传播、使用但未经作者允许请勿用于商业场合。使用本软件造成的一切后果作者一概不负责任! 1、本软件及相关文档的版权及其他权利都归“原作者”所有并保留一切权利。除了授权许可协议所提供的明确书面许可外,拥有本程序及相关文档并不赋予您任何有关这些版权或其他知识产权的许可。 2、本软件仅供学习。你可以任意使用、拷贝和分发,但严禁用于商业用途和一切盈利目的,违者必究。我们尊重原作者,保留本软件的一切权利。 3.我们保证本软件不含有任何破坏性代码和木马程序,但在用户使用中可能出现的任何损失我们不付任何责任。 4.本软件不承诺提供任何技术支持和服务,如果您自身不具备相应技术,可到论坛求助或联系我们提供商业服务。 ☆ 本程序为 王志峰 修改 

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧