精华内容
下载资源
问答
  • //utf8与gb2312的相互转换 QString utf8Togb2312(QString data) { QTextCodec* utf8Codec = QTextCodec::codecForName("utf-8"); QTextCodec* gb2312Codec = QTextCodec::codecForName("gb2312"); QString str...

    编码方式之间的转换是先将源编码转到无编码,然后再转到目标编码

    // utf8与gb2312的相互转换

    QString utf8Togb2312(QString data)
    {
        QTextCodec* utf8Codec = QTextCodec::codecForName("utf-8");
    	QTextCodec* gb2312Codec = QTextCodec::codecForName("gb2312");
    
    	QString strUnicode = utf8Codec->toUnicode(data.toLocal8Bit());    //无编码
    	QByteArray ByteGb2312 = gb2312Codec->fromUnicode(strUnicode);     //无编码转换
    
        char* pTmp= new char[ByteGb2312.length() + 1];
    	memset(pTmp, 0, ByteGb2312.length() + 1);
    	strncpy(pTmp, ByteGb2312.data(), ByteGb2312.length());
        printf("%s\n", pTmp);
    
        delete pTmp;
    
        return QString::fromLocal8Bit(ByteGb2312);
    }
    
    QString gb2312Toutf8(QString data)
    {
        QTextCodec* utf8Codec = QTextCodec::codecForName("utf-8");
    	QTextCodec* gb2312Codec = QTextCodec::codecForName("gb2312");
    
    	QString strUnicode = gb2312Codec ->toUnicode(data.toLocal8Bit());    //无编码
    	QByteArray ByteUTF8 = utf8Codec ->fromUnicode(strUnicode);     //无编码转换
    
        return QString::fromLocal8Bit(ByteUTF8);
    }

     

    展开全文
  • UTF-8GB2312相互转换

    2021-07-17 16:47:27
    功能:UTF-8转换为GB2312 ************************************/ static char* Utf8ToGB2312(const char* utf8) { int len = MultiByteToWideChar(CP_UTF8, 0, utf8, -1, NULL, 0); wchar_t* wstr = new ...
    	/***********************************
    	函数:Utf8ToGB2312
    	功能:UTF-8转换为GB2312
    	************************************/
    	static char* Utf8ToGB2312(const char* utf8)
    	{
    		int len = MultiByteToWideChar(CP_UTF8, 0, utf8, -1, NULL, 0);
    
    		wchar_t* wstr = new wchar_t[len + 1];
    		memset(wstr, 0, len + 1);
    
    		MultiByteToWideChar(CP_UTF8, 0, utf8, -1, wstr, len);
    		len = WideCharToMultiByte(CP_ACP, 0, wstr, -1, NULL, 0, NULL, NULL);
    
    		char* str = new char[len + 1];
    		memset(str, 0, len + 1);
    
    		WideCharToMultiByte(CP_ACP, 0, wstr, -1, str, len, NULL, NULL);
    
    		if (wstr) {
    			delete[] wstr;
    			wstr = NULL;
    		}
    		return str;
    	}
    	/***********************************
    	函数:GB2312ToUtf8
    	功能:GB2312转换为UTF-8
    	************************************/
    	static char* GB2312ToUtf8(const char* gb2312)
    	{
    		int len = MultiByteToWideChar(CP_ACP, 0, gb2312, -1, NULL, 0);
    		wchar_t* wstr = new wchar_t[len + 1];
    		memset(wstr, 0, len + 1);
    		MultiByteToWideChar(CP_ACP, 0, gb2312, -1, wstr, len);
    		len = WideCharToMultiByte(CP_UTF8, 0, wstr, -1, NULL, 0, NULL, NULL);
    		char* str = new char[len + 1];
    		memset(str, 0, len + 1);
    		WideCharToMultiByte(CP_UTF8, 0, wstr, -1, str, len, NULL, NULL);
    		if (wstr) delete[] wstr;
    		return str;
    	}

    展开全文
  • java utf-8 gb2312

    2021-03-08 08:55:00
    Java支持UTF-8、ISO-8859-1、GBK等各种字体编码,可笔者发现Java中字体编码的问题仍难倒了不少程序员,网上虽然也有不少关于在Java中如何正确显示中文的文章,但都不够全面,笔者特意总结如下。影响Java中字体编码...

    Java支持UTF-8、ISO-8859-1、GBK等各种字体编码,可笔者发现Java中字体编码的问题仍难倒了不少程序员,网上虽然也有不少关于在Java中如何正确显示中文的文章,但都不够全面,笔者特意总结如下。

    影响Java中字体编码正确显示的有几个因素: 1)数据库的连接方式; 2)网页中使用的字体编码; 3)数据库里存放数据的字体编码; 4)Java的缺省字体编码。如果在编程中遇到不能正确显示中文时,要先弄清楚以上几项所使用的字体编码,再分析找出原因,即可解决问题。

    众所周知,JSP是Java的一种,和网页有关,而网页也有自己的中文编码系统,所以JSP处理中文要比纯Java的类文件更为麻烦。本文的测试数据库是MySQL3.2,数据库连接驱动是用org.gjt.mm.mysql.Driver,这里主要讨论UTF-8和GBK的显示( GB2312是GBK的一个子集,Java中可以使用GBK来代替GB系列)。我们先来研究JSP中字体编码问题,下面第一到第六点是针对JSP的(因为从数据库里读出中文数据与写入中文数据有所区别,咱们分别说明,前三点是从读取数据库到显示在网页,后三点是从网页输入数据到存入数据库),第七到第九点针对纯Java的类文件。以下rs表示ResultSet的一个实例,是执行Select语句之后产生的数据集。

    一、数据库连接方式使用UTF-8

    在连接数据库的驱动后面加上这句参数useUnicode=true&characterEncoding=

    UTF-8,例如jdbc:mysql://localhost/DBVF?autoReconnect=true&useUnicode=

    true&characterEncoding=UTF-8,从数据库里读出中文显示在使用GBK的JSP的网页里,如果数据库里存放的字体编码是UTF-8,在JSP中使用 str=new String(rs.getBytes(1),"UTF-8")或者str=rs.getString(1),可以正确显示中文。如果数据库里存放的是 GBK数据,那么JSP中也要使用str=new String(rs.getBytes(1),"GBK")来显示正确的中文。值得注意的是如果页面使用UTF-8,数据库里存放的是UTF-8,也可以用str=new String(rs.getBytes(1),"GBK")正确显示中文。如果网页是UTF-8,而数据库里存放的是GBK,无法直接显示中文,需要2步转换, str=new String(rs.getBytes(1),"GBK"); 再str=new String(str.getBytes("UTF-8"),"GBK"),才可以正确显示中文。

    二、数据库连接方式使用GBK

    在连接数据库的驱动后面加上这句参数useUnicode=true&characterEncoding=

    GBK,例如jdbc:mysql://localhost/DBVF?autoReconnect=true&UseUnicode=true&  //(selcet 语句中有汉字 必须有characterEncoding='utf-8' 或"GBK”)

    characterEncoding=GBK,从数据库里读出中文,显示在使用GBK的JSP的网页里,如果数据库里存放的字体编码是 UTF-8,在JSP中一定要使用 str=new String(rs.getBytes(1),"UTF-8"),才正确显示中文。如果数据库里存放的是GBK数据,那么JSP中也要使用str=new String(rs.getBytes(1),"GBK") 或者直接使用str=rs.getString(1),即可显示正确的中文。如果网页是UTF-8,而数据库里存放的是GBK,只能用str=new String(rs.getString(1).getBytes("UTF-8"),"GBK")的方法来显示中文; 如果网页是UTF-8,而数据库里存放的是UTF-8,可用str=new String(rs.getBytes(1),"GBK") 或者rs.getString(1)方法来显示中文。

    三、使用缺省数据库连接方式

    连接数据库的驱动后面没有这句参数useUnicode=&characterEncoding=,例如 jdbc:mysql://localhost/DBVF?autoReconnect=true,没有参数useUnicode=true& characterEncoding,表示使用默认的ISO-8895-1编码。

    1. 从数据库里读出中文,显示在GBK的网页里。如果数据库里存放的字体编码是UTF-8,在JSP网页中一定要使用语句 str=new String(rs.getBytes(1),"UTF-8") 或者str= new String(rs.getString(1).getBytes("ISO-8859-1"),"UTF-8"),才可正确显示中文。如果数据库里存放的是GBK数据,那么JSP中也要使用str=new String(rs.getBytes(1),"GBK")或str=new String(rs.getString(1).getBytes("ISO-8859-1"),"GBK") 显示正确的中文。

    2. 如果网页是UTF-8,不能直接正确显示GBK,需要2步转换,str=new String(rs.getBytes(1),"GBK"),再str=new String(str.getBytes("UTF-8"),"GBK") 才可以正确显示中文。如果数据库里存的是UTF-8,直接用str=new String(rs.getBytes(1),"GBK")或者str=new String(rs.getString(1).getBytes("ISO-8859-1"),"GBK")就可以显示中文了。

    以上是读取数据库里中文正确显示在网页上,下面三点是如何正确存入数据库。

    四、数据库连接方式使用UTF-8编码

    JSP中要把网页输入的中文存入数据库,通常有一个提交(Submit)的过程,是用 str=request.getParameter("username"),然后执行update或者insert语句来存入数据库。如何赋值给str 很重要,而且这里中文输入与网页所使用的字体编码有关。

    1、 网页使用UTF-8,使用str= new String(request.getParameter("username").getBytes("ISO-8859-1"),"UTF-8")或者str= new String(request.getParameter("username").getBytes(),"UTF-8"),都可以使得存到数据库里的数据是UTF-8编码。

    2. 网页使用GBK,使用str= new String(request.getParameter("username").getBytes(),"GBK"),那么存入数据库的是UTF-8编码。

    3. 值得注意的是使用UTF-8的数据库连接方式不能存得GBK。

    五、数据库连接方式使用GBK编码

    1. 输入使用GBK网页,存到数据库里是GBK的方法: str= new String(request.getParameter("username").getBytes("ISO-8859-1"),"GBK") 或者str= new String(request.getParameter("username").getBytes(),"GBK")。

    2. 网页使用GBK,想存入UTF-8到数据库里,要分2步: 先str=new String(request.getParameter("username").getBytes(),"GBK"),再str=new String(str.getBytes("UTF-8"),"GBK")即可。

    3. 网页使用UTF-8,而且使用str= new String(request.getParameter("username").getBytes("ISO-8859-1"),"GBK") 或者str= new String(request.getParameter("username").getBytes(),"UTF-8"),那么存到数据库里的数据是 UTF-8编码。

    4. 网页使用UTF-8,而且使用str= new String(request.getParameter("username").getBytes("ISO-8859-1"),"UTF-8"),那么存到数据库里的数据是GBK编码。

    六、数据库连接方式使用缺省,即不使用参数useUnicode和characterEncoding

    1. 网页使用GBK,如果使用str= request.getParameter("username")或者str= new String(request.getParameter("username").getBytes()),那么在数据库里的数据是GBK码。网页使用 UTF-8 和使用str= request.getParameter("username"),则存入数据库是UTF-8编码。

    2. 如果使用str= new String(request.getParameter("username").getBytes("ISO-8859-1")),那么根据网页提供的字体编码而存到数据库里,比如是UTF-8的网页,那么存到数据库中就是UTF-8编码,如果使用GBK网页,那么存到数据库里的字就是GBK编码。

    3. 如果使用str= new String(request.getParameter("username").getBytes("UTF-8"),"UTF-8")这一种组合能存到正确的数据外,其他存到数据库里的数据则都是乱码或者错误码。在这个UTF-8组合的特例中,网页使用的是GBK,则存放到数据库里就是GBK,网页使用UTF-8,那么存到数据库里的就是UTF-8。

    4. 网页是GBK的要存得UTF-8,一定需要2步: company=new String(request.getParameter("company").getBytes(),"GBK")和company=new String(company.getBytes("UTF-8"))。

    5. 网页是UTF-8的,不能存得GBK在数据库里,一句话,改变数据库连接方式不能存得GBK码。

    以上所有的都是基于JSP网页和数据库交换数据,下面讨论一下纯JAVA编程下的字体编码转换。

    七、数据库连接方式使用UTF-8编码

    1. 数据库里的中文是UTF-8,可以转换为GBK,但不能把GBK存入数据库。

    2. 数据库是GBK,如果转换为UTF-8,使用content=new String(rs.getBytes(2),"GBK")直接将content存入数据库就可为UTF-8。

    八、数据库连接方式使用GBK编码

    1. 数据库里的中文是UTF-8,如果转换为GBK,使用content= new String(rs.getString(2).getBytes(),"UTF-8"),再直接使用update或者insert语句插入到数据库,即存得GBK。如果使用content= new String(rs.getString(2).getBytes(),"GBK")或者content= new String(rs.getString(2).getBytes()),再存入数据库即存得还是UTF-8编码。

    2. 数据库里的中文是GBK,如果转换为UTF-8,使用content= new String(rs.getString(2).getBytes("UTF-8"))或者content= new String(rs.getString(2).getBytes("UTF-8"),"GBK"),再直接使用update或者insert语句插入到数据库,即存得UTF-8。

    3. 如果某个String是GBK,要转换为UTF-8,也是使用content= new String(GBKstr.getBytes("UTF-8"))或者content= new String(GBKstr.getBytes("UTF-8"),"GBK"); 如果某个String是UTF-8,要转换为GBK,应该使用new String(UTFstr.getBytes("GBK"),"UTF-8")。

    九、数据库连接方式使用缺省,即不跟参数

    1. str2=new String(GBKstr.getBytes("UTF-8"),"ISO-8859-1"),可以将数据库里的GBK编码转换为UTF-8。

    2. 读取UTF-8然后存入UTF-8,则用str1=new String(UTFstr.getBytes(),"ISO-8859-1")或者str1=new String(UTFstr.getBytes("GBK"),"ISO-8859-1")。

    3. 不能实现数据库里的UTF-8转换为GBK。

    如果采用UTF-8的数据库连接方式或者缺省数据连接方式,那么无法将UTF-8转为GBK;而GBK的数据库连接方式可以实现UTF-8和GBK的相互转换。建议大家采用GBK的数据连接方式。

    展开全文
  • php utf8 GB2312处理

    2021-04-13 10:34:01
    今天用到百度的留言代码时遇到一个问题,你把所有表单获取到的数据都转换为utf8了,我的页面编码是GB2312,存入数据库后读出来就乱码!学PHP的时候经常遇到PHP编码的难题!所以今天把解决的方法共享一下:在将数据...

    今天用到百度的留言代码时遇到一个问题,你把所有表单获取到的数据都转换为utf8了,我的页面编码是GB2312,存入数据库后读出来就乱码!学PHP的时候经常遇到PHP编码的难题!

    所以今天把解决的方法共享一下:

    在将数据存入数据库之前,就将数据转为GBK编码!

    用到的相关函数为:mb_convert_encoding(“$str”, “utf-8″, “gb2312″);

    以下是函数mb_convert_encoding的相关介绍(转载的)

    函数原型:

    /**

    * 多字节字符串编码转换函数

    *

    * @param string str 需要进行编码转换的字符串

    * @param string to_encoding 指定转换为某种编码,如:gb2312、gbk、utf-8等

    * @param mixed from_encoding 混合指定原来字串的编码,如:同时指定 JIS, eucjp-win, sjis-win 混合编码

    * @return string

    string mb_convert_encoding ( string str, string to_encoding [, mixed from_encoding] )

    使用举例:

    1、把 GBK 编码字串转换成 UTF-8 编码字串

    Php代码

    2、把 UTF-8 编码字串转换成 GB2312 编码字串

    Php代码

    // 注意将此文件存盘成 utf-8 编码格式文件再测试

    3、对整个页面 进行转换

    该方法适用所有编码环境。把前128个字符以外(显示字符)的字符集都用 NCR (Numeric character reference,如“汉字”将转换成“汉字”这种形式)来表示,这样的编码在任意编码 环境下页面都能正常显示。

    方法是在php文件的头部加上下面三行代码:

    Php代码

    mb_internal_encoding(“gb2312″); // 这里的gb2312是你网站原来的编码

    mb_http_output(“HTML-ENTITIES”);

    ob_start(‘mb_output_handler’);

    不过,使用mb_convert_encoding 函数需启用PHP 的mbstring (multi-byte string)扩展。

    查看php的信息页面,如果出现如下画面:

    则说明已启用mbstring (multi-byte string)扩展支持。

    如果没有出现上面的画面,则需要做如下设置 ,让php支持该扩展。

    1、windows 服务器环境

    编辑 php.ini 文件,将; extension=php_mbstring.dll 前面的 ; 去掉,重启网页服务器。

    展开全文
  • 部分参考:www.360doc.com/content/12/0926/12/1072296_238242301.shtmlhttps://blog.csdn.net/wyingquan/article/details/3882432涉及到的文件unicode_to_gb2312_table.bin,请前往我的csdn资源下载中寻找源码如下...
  • #include #include #includeusing namespace std;int utf8togb2312(const char *sourcebuf,size_t sourcelen,char *destbuf,size_t destlen) {iconv_t ...if( (cd = iconv_open("gb2312","utf-8")) ==0 )return -1;m...
  • utf8 gb2312编码在线转换工具style="Z-INDEX: 1000; VISIBILITY: hidden; WIDTH: 1px; POSITION: absolute; HEIGHT: 1px; BACKGROUND-COLOR: #9cc5f8">style="BACKGROUND-POSITION: right center; BACKGROUND-...
  • c++ utf-8 gb2312互转

    2021-06-09 10:45:00
    //gbk2utf8.hpp #ifndef _GBK2UTF_8_H_ #define _GBK2UTF_8_H_ #include <iconv.h> #include <stdio.h> #include <malloc.h> #include <exception> #include <sstream> namespace ...
  • android utf-8gb2312

    2021-06-04 16:05:48
    android 通过EditText.getText().toString(),得到设备的名称(devicename),android默认的编码是utf-8,现在修改支持中文的名字,必须要对devicename字符串转gbk或者gb2312,开始觉得字符串转码,本来就有接口:...
  • import java.io.UnsupportedEncodingException;import java.net.URLEncoder;public class UnicodeChange {//UTF-8-&...GB2312public static String utf8Togb2312(String str){StringBuffer sb = new StringBuffer();...
  • // 我这设置 file.encoding 为 UTF-8 byte[] utf8Bytes = str.getBytes("utf-8"); byte[] defaultBytes = str.getBytes(); Assert.assertArrayEquals(utf8Bytes, defaultBytes); byte[] gbkBytes = str.getBytes(...
  • java UTF-8转换GB2312

    2021-02-12 13:01:38
    Java则采用了平台无关的UNICODE,Java从一个byte流中读取一个字符串时,将把平台相关的byte转变为平台...GB2312编码中一个汉字是16位的,而UTF8中一个汉字却是24位的。如果发出页面采用了UTF-8的编码,怎样实现转换...
  • #include#include #includeusing namespace std;int utf8togb2312(const char *sourcebuf,size_t sourcelen,char *destbuf,size_t destlen){iconv_t ...if( (cd = iconv_open("gb2312","utf-8")) ==0 )return -1;mem...
  • UTF-8编码和GB2312编码

    2021-02-27 20:22:12
    DBC与数据库通讯时采用的编码方式能包含客 户端发送的文字信息,事实上,最好让JDBC直接使用UNICODE/UTF8与数据库通讯!这样 就可以确保不会丢失信息;Server向客户端发送的信息时也要采用不丢失信息的编码方 式,也...
  • PHP substr 截取字符串出现乱码问题解决方法[utf8与gb2312]2018-12-30substr --- 取得部份字符串语法 : string substr (string string,int start [,int length])说明 :substr( )传回 string的一部份字符串,由参数 ...
  • PHP utf-8gb2312编码转换乱码的问题经过一时间的 php + mssql,感觉 mssql 对编码的支持不是很好(其实还是自己没有把握好啦),但是又还没有来得急换数据库,只能将就点,今天又在提交数据时出现了错误。...
  • 这时候就需要把GB2312的文件转成UTF8的文件.转化的思路很简单,读入流初始化的时候告诉jvm是GB2312编码,读入后jvm内部会转成UNICODE,写出的时候再告诉jvm以UTF8的形式写出即可.源代码如下:import java.io.*;public ...
  • 一、预习:1、Unicode 和utf-8之间的关系unicode是一种编码标准,具体的实现标准可能是utf-8utf-16,gbk ……UTF-8是Unicode的实现方式之一2、python2和python3 Unicode变化Python 2有两个全局函数可以把对象强制...
  • 这篇文章主要介绍了将编码从GB2312转成UTF-8的方法汇总(从前台、程序、数据库),需要的朋友可以参考下一个网站如果需要国际化,就需要将编码从GB2312转成UTF-8,其中有很多的问题需要注意,如果没有转换彻底,将会有...
  • 上网找了些资料,发现确实挺简单的,不知道为啥被人误导,弄出一个还被广泛转载的CChineseCode类。然而它仅仅针对汉字(每个汉字在UTF-8编码中占3个字节...再参考一些文章,给出转换方式如下://gb2312 to unicodeint...
  • 昨天遇到了GBK和UTF8互转问题,查了不少资料都没理出头绪,发帖提问无人问津,给管理留言亦是杳无音信。花费了几个小时,查了不少资料(其他论坛),经过N词失败之后终于转换成功,在这里分享给大家,希望能给有需要的...
  • function GetGB2312String($name) {$tostr = "";for($i=0;$i$curbin = ord(substr($name,$i,1));if($curbin < 0x80) {$tostr .= substr($name,$i,1);} elseif($curbin < bindec("11000000")) {$str = substr($...
  • 科技常识:Linux下实现UTF-8GB2312互相转换的方法2021-04-11 15:01:22今天小编跟大家讲解下有关科技常识:Linux下实现UTF-8GB2312互相转换的方法,相信小伙伴们对这个话题应该也很关注吧,小编也收集到了有关...
  • } /** * 判断字符串是utf-8 还是gb2312 * @date 2021/4/1 13:58:30 * @param $str * @param string $default * @return string * @author zm */ public static function utf8_gb2312($str, $default = 'gb2312') { ...
  • (申明:此文章属于原创,若转载请表明作者和原处链接 )/*author:wu.jian(吴剑)English name: Sword/*date:2007-12-13/*purpose:知识共享这几天工作上碰到了UTF-8GB2312的问题,而且是在嵌入式的环境下,没有API...
  • 可能大家会发现esp8266获取到的网页信息在只有在Arduino的串口可以输出,如果选择了其他串口助手就会乱码,这个是因为Arduino和大部分网页(如心知天气)采用的都是UTF-8编码,但是我们的汉字是GB2312编码。...
  • 背景本人在使用oracle的sqlplus批量导入UTF8编码的sql脚本时,由于不了解如何设置让sqlplus识别UTF8格式,导致出现乱码、错行等错误,而使工作无法继续,在google无果的情况下只好想办法转换编码。由于文件较多,...
  • PHP 解决utf-8gb2312编码转换问题发布于 2015-02-09 20:54:16 | 153 次阅读 | 评论: 0 | 来源: 网友投递PHP开源脚本语言PHP(外文名: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 216,191
精华内容 86,476
关键字:

utf8与gb2312