中文问题的一些建议(把GB2312或BIG5转换成unicode函数)

GB2312, BIG5, UTF8, Unicode之间的互换 char* UTF8ToGB2312(const char* pStrUTF8) { // 先转成宽字符 int nStrLen = MultiByteToWideChar(CP_UTF8, 0, pStrUTF8, -1, NULL, 0); wchar_t* pWStr = new wchar_t[nStrLen + 1]; memset(pWStr, 0, nStrLen + 1); 阅读详情

中文问题的一些建议
很多朋友都在开发时遇到中文问题,现在将我收集到的一些转换函数给大家公布,希望有帮助。
一般来说java都是以unicode进行编码显示,而中文常用的编码有GB2312,和UTF-8,
(不是所有输入的中文都是UNICODE,大家需要注意确认)。大家在传中文时需要自己拼结。
要把GB2312或BIG5转换成unicode 得用:
unicodeString = new String(myString.getBytes(), "GB2312");
或
unicodeString = new String(myString.getBytes(), "Big5");
但是在一般的手机上不同的特性可能并不支持GB2312和Big5,我所知道的moto的手机就不支持。
所以,以下函数可能用的上。(注明:并非我写的,但是都是正确的)

class transCN{
static public String convertUTF8String2Unicode(String instr)
throws IOException {
//byte[] strbytes = instr.getBytes();
int charindex = instr.length();
int actualValue;
int inputValue;
StringBuffer sbtemp = new StringBuffer();

for (int i = 0; i < charindex;) {

actualValue = -1;
inputValue = instr.charAt(i++);

inputValue &= 0xff;

   if ((inputValue & 0x80) == 0) {
       actualValue = inputValue;
   }
   else if ((inputValue & 0xF8) == 0xF0) {
       actualValue = (inputValue & 0x1f) << 18;

       int nextByte = instr.charAt(i++) & 0xff;
       if ((nextByte & 0xC0) != 0x80)
           throw new IOException("Invalid UTF-8 format");
       actualValue += (nextByte & 0x3F) << 12;

       nextByte = instr.charAt(i++) & 0xff;
       if ((nextByte & 0xC0) != 0x80)
           throw new IOException("Invalid UTF-8 format");
       actualValue += (nextByte & 0x3F) << 6;

       nextByte = instr.charAt(i++) & 0xff;
       if ((nextByte & 0xC0) != 0x80)
       throw new IOException("Invalid UTF-8 format");
       actualValue += (nextByte & 0x3F);
       }
       else if ((inputValue & 0xF0) == 0xE0) {
       actualValue = (inputValue & 0x1f) << 12;

       int nextByte = instr.charAt(i++) & 0xff;
       if ((nextByte & 0xC0) != 0x80)
           throw new IOException("Invalid UTF-8 format");
       actualValue += (nextByte & 0x3F) << 6;

   nextByte = instr.charAt(i++) & 0xff;
   if ((nextByte & 0xC0) != 0x80)
       throw new IOException("Invalid UTF-8 format");
   actualValue += (nextByte & 0x3F);
   }
   else if ((inputValue & 0xE0) == 0xC0) {
   actualValue = (inputValue & 0x1f) << 6;

   int nextByte = instr.charAt(i++) & 0xff;
   if ((nextByte & 0xC0) != 0x80)
   throw new IOException("Invalid UTF-8 format");
   actualValue += (nextByte & 0x3F);
   }
   sbtemp.append((char) actualValue);
   }

   return sbtemp.toString();
   }

public static byte[] convertUnicode2UTF8Byte(String instr) {
int len = instr.length();
byte[] abyte = new byte[len << 2];
int j = 0;
for (int i = 0; i < len; i++) {
char c = instr.charAt(i);

if (c < 0x80) {
abyte[j++] = (byte) c;
}
else if (c < 0x0800) {
abyte[j++] = (byte) (((c >> 6) & 0x1F) | 0xC0);
abyte[j++] = (byte) ((c & 0x3F) | 0x80);
}
else if (c < 0x010000) {
abyte[j++] = (byte) (((c >> 12) & 0x0F) | 0xE0);
abyte[j++] = (byte) (((c >> 6) & 0x3F) | 0x80);
abyte[j++] = (byte) ((c & 0x3F) | 0x80);
}
else if (c < 0x200000) {
abyte[j++] = (byte) (((c >> 18) & 0x07) | 0xF8);
abyte[j++] = (byte) (((c >> 12) & 0x3F) | 0x80);
abyte[j++] = (byte) (((c >> 6) & 0x3F) | 0x80);
abyte[j++] = (byte) ((c & 0x3F) | 0x80);
}
}

byte[] retbyte = new byte[j];
for (int i = 0; i < j; i++) {
retbyte[i] = abyte[i];
}
return retbyte;
}


  
public static String ISO106462Unicode(byte[] myByte){
 String result=new String("");
 
 StringBuffer sb = new StringBuffer("");
 try
 {
 /*将字符串转换成byte数组*/
   //byte[] myByte= str.getBytes("ISO10646");

   int len = myByte.length;

   for(int i=0;i < len;i=i+2)
   {
     byte hiByte=myByte[i];
     byte loByte=myByte[i+1];

     int ch =(int)hiByte << 8;
      ch = ch & 0xff00;
      ch +=(int)loByte & 0xff;

      sb.append((char)ch);
   }

   result = new String(sb.toString());

   }
   catch(Exception e)
   {
     System.out.println("Encoding Error");
   }
 return result;
}

public static byte[] Unicode2Byte(String s)
{
int len = s.length();
byte abyte[] = new byte[len << 1];
int j = 0;
for(int i = 0; i < len; i++)
{
char c = s.charAt(i);
abyte[j++] = (byte)(c & 0xff);
abyte[j++] = (byte)(c >> 8);
}

return abyte;
}

}
 

关于GB2312,GBK,GB18030,Unicode,utf-8,utf-16等的字符集和编码问题一次全说清 针对开发人员经常会遇到的字符集和编码问题,还有字符乱码问题,本文通过对字符,字符集,字符编码,对常用的GB2312、GBK、BG18030、Unicode、utf-8、utf-16,还有windows记事本中常出现的ANSI、Unicode big endian、utf-8 with BOM等编码问题都进行了分析和解答。 阅读详情

相关推荐

转换到Unicode-Big5码

中英文字符串转换到Unicode-Big5码字符串,针对收发PDU短信的程序,适用于粘贴到C语言中使用,当然要用"号在两头括起,每汉字产生4个0~F字符,这样就不必使用两个0作用字符串的结束从而完全兼容于C语言。

[转] 字符集编码(GBK,BIG5,UNICODE)与C++的string/wstring

  GBK,BIG5等字符集编码范围的具体说明  一 预备知识 1,字符:字符是抽象的最小文本单位。它没有固定的形状(可能是一个字形),而且没有值。“A”是一个字符,“€”(德国、法国和许多其他欧洲国家通用货币的标志)也是一个字符。“中”“国”这是两个汉字字符。字符仅仅代表一个符号,没有任何实际值的意义。2,字符集:字符集是字符的集合。例如,汉字字符是中国人最先发明的字符,在中文、日文、...

weixin_33713350的博客 421

Big5字与Unicode的互换

Big5字与Unicode的互换

ASCII、GB2312、GBK、GB18030、Unicode、UTF-8、BIG5 编码分析

“锟斤拷,烫烫烫烫烫~~~~” ASCII、gb2312、gbk、utf-8、Unicode编码详解

小清华的小哥哥 8915

UTF-8与GB与 Big5之间的转换

可以实现UTF-8 GB Big5之间的转换. 但是UTF-8 转gb,时不行,,遇到 ? . 的符号号就停止,后面的就不转换了, 希望高手优化一下

音频测试专题

麦克风与扬声器单体测试指标及整机性能测试概述 麦克风测试指标包括频率响应、灵敏度、指向性等10项关键参数,用于评估声音捕捉和信号转换性能。扬声器测试包含频率响应、灵敏度等12项指标,涉及声学特性和物理参数。整机性能测试覆盖安静、嘈杂和正常三种环境,重点检测麦克风底噪、清晰度、扬声器音量及通话质量等12项功能指标。两类单体测试与整机测试共同构成完整的音频设备质量评估体系,确保产品在不同场景下的性能表现。

weixin_52640906的博客 1317

BIG5编码, GB编码(GB2312, GBK, ...), Unicode编码, UTF8, WideChar, MultiByte, Char 说明与区别

一. BIG5编码, GB编码(GB2312, GBK, ...), Unicode编码 1.1. BIG5编码 BIG5字集是台湾繁体字集,共包括国标繁体汉字13053个 1.2. GB编码 GB2312字集是简体字集, 全称为GB2312(80)字集, 共包括国标简体汉字6763个; GB2312是中国规定的汉字编码, 也可以说是简体中文的字符集编码; GBK包含全部中文字

cay22的专栏 1万+

Ubuntu 22.04 安装 PostgreSQL + AGE + pgvector 完全指南

本教程详细介绍了在Ubuntu 22.04服务器上安装PostgreSQL数据库,并为其添加AGE图数据库扩展和pgvector向量搜索扩展的步骤。首先,更新系统并安装PostgreSQL,然后通过源码构建并安装AGE和pgvector扩展。接着,配置PostgreSQL以使用这些扩展,并可选地允许远程连接。教程还包括创建用户、设置密码、验证安装以及安装后的优化建议。最后,提供了常见问题的解决方法。通过本教程,用户可以在同一数据库中处理关系型数据、图数据和向量数据,为现代应用程序提供强大的数据支持。

这个是个人博客,记录生活中的一些日常。 1742

我所了解的GB2312、Unicode、GBK、UTF-8、BIG5等编码

小编一直对文字编码感到模糊,在学习、编程等过程中也经常会遇到与之相关的问题,无奈只能问百度。于是,为解决这一问题,小编花了一些时日了解和学习这些编码,整理出了这些编码的“性格特点”,“兴趣爱好”等等(文章中可能不全面,接受建议)。 有关文章参见:趣谈unicode,ansi,utf-8,unicode big endian这些编码有什么区别。 在这之前,我得先提一下ASCII码(American ...

Yangchenju的博客 1万+

别再只抄代码了!深入理解MQ2传感器数据手册,搞定ppm换算公式

本文深入解析MQ2烟雾传感器的工作原理与ppm换算公式,从数据手册解读到数学建模,提供详细的校准与优化方法。通过实际案例和代码示例,帮助开发者准确测量气体浓度,解决常见问题,提升传感器应用的可靠性。

weixin_42713608的博客 504

3D打印切片软件Cura及CuraEngine原理分析

引言         年初开始进入3D打印行业,受命以Cura为基础,研发一款自主的3D打印切片软件。         自主研发要取其长处,补其不足,首先自然是要搞清楚Cura到底做了什么,读Cura的代码是必需的。我一向都觉得比起自己写代码来,读别人的代码是一个漫又而痛苦的过程,读者的思想与写者总有偏差,往往又无法验证自己的猜想是否正确,只叹人脑不是电脑,无法把眼前的代码从头到尾执行一遍...

AiDiShengDeXiaoWu的博客 4421

字符编码发展史3 — GB2312/Big5/GBK/GB18030

GB2312是中国国家标准总局发布的一种用于中文信息交换的字符编码标准,全称为《信息交换用汉字编码字符集·基本集》。它于1981年5月1日实施,标准号为,所以你看到的GB2312-80GB2312指的都是同一个东西,只不过有多个不同的叫法。GB2312中的“GB”为“国标”的汉语拼音首字母缩写,即“国家标准”之意,GB2312是早期在计算机中处理简体中文的重要标准,后被GBK和GB18030替代。GB2312主要收录了简体中文字符,共收录6763个汉字,其中一级汉字3755个,二级汉字3008个。

阳光日志 2301

智能安防摄像头埋点实践:用户行为与设备状态的闭环监控(含AI事件)

智能安防摄像头埋点闭环体系设计及应用实践 摘要: 本文系统阐述了智能安防摄像头埋点闭环体系的设计与实践。首先分析了传统埋点的不足及闭环埋点的价值,提出由用户行为埋点、设备状态埋点和AI事件埋点构成的三维埋点体系框架。详细介绍了闭环监控的四大流程:数据采集、汇聚清洗、分析建模和智能决策。通过误报优化、个性化策略等案例展示了AI事件闭环的实际应用价值,并探讨了隐私合规、性能优化等关键挑战的解决思路。最后展望了端侧AI增强、预测型埋点等未来发展趋势。该体系实现了从数据采集到业务决策的完整闭环,有效提升了AI模型性

专注智能硬件软硬件产品经理成长与实战,分享从需求定义到量产落地的真实日记。涵盖IoT趋势洞察、研发协作经验、产品方法论与工具箱,用轻松有趣的“汪式”视角,陪伴产品经理成长、避坑与升级。 1046

asp big5 gb2312 转 Unicode

原文:http://blog.blueshop.com.tw/HammerChou/archive/2006/05/13/23578.aspxbig5转unicode------------------------------------------------------------------ASP 如何實作 VB 的 StrConv 函數來進行 Unicode 轉換

创世元年 1312

离线安装 nvidia-docker2(nvidia-container-toolkit)

很多时候大家都有用docker使用gpu的需求,但是因为网络等原因不是那么好用,这里留了一个给ubuntu的安装包,网络好的话也提供了在线安装方式。

father_yingying的博客 1181

ABAP CDS 视图参数 parameter_list 详解与最佳实践:从语法、作用域到可运行范例

本文系统梳理了ABAP CDS视图的WITH PARAMETERS定义与使用。主要内容包括:1)参数声明语法及其在整条SELECT语句中的贯穿使用;2)参数在WHERE/HAVING/ON等位置的多种写法(:pname和$parameters.pname);3)参数在航空公司航线筛选等实际业务场景中的应用;4)参数与会话变量的协作策略;5)在JOIN ON、HAVING、CASE等高级用法中的实践;6)提供完整的CDS视图与ABAP程序示例,展示参数声明、使用及Open SQL传参方式。所有内容均基于SAP

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 372

汉字编码-GB2312-GBK-GB18030-Big5

汉字编码-GB2312、GBK、GB18030、Big5.

第七宇林的博客 8014

uniapp微信小程序开发:解决Video播放m3u8视频流非卡顿问题,使用video视频标签播放M3U8视频流或直播流总是加载一卡一卡的体验非常差的情况【多种优化方案提升流畅度和缓冲方案示例源码】

uniapp微信小程序video播放m3u8视频流卡,uniapp video在微信小程序播放m3u8格式视频总是加载频繁卡顿,Uniapp微信小程序苹果ios真机播放m3u8很卡加载不流畅怎么办,uni-App如何解决小程序端video播放视频流M3U8格式出现卡顿情况,uniapp播放m3u8直播流卡顿如何优化?uniapp m3u8格式视频加载,.m3u8监控视频,uniapp微信小程序使用video组件播放M3U8视频卡顿,uniapp微信小程序视频播放卡顿如何解决,uniapp 打包微信小程序播放

✅ 精选推荐文章 2987

一文搞清楚中文编码们:GB2312, GBK, GB18030, Big5

前一篇我转载的这个博主的博文:ANSI是什么编码?中有这样一段小故事: 话说计算机是由美国佬搞出来的嘛,他们觉得一个字节(可以表示256个编码)表示英语世界里所有的字母、数字和常用特殊符号已经绰绰有余了(其实ASCII只用了前127个编码)。后来欧洲人不干了,法国人说:我需要在小写字母加上变音符号(如:é),德国人说:我也要加几个字母(Ä ä、Ö ö、Ü ü、ß)。于是,欧洲人就将ASCII没用完的编码(128-255)为自己特有的符号编码(后来称之为“扩展字符集”)。等到我们中国人开始使用计算机的时候,

随手记记,加深印象。 1366

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

GB2312和BIG5,Unicode/UTF8等编码之间的互相转化

在工作中经常会用到GB2312和BIG5,Unicode/UTF8等编码之间的互相转化,也有很多程序员对这个问题不断的提问,现在我把我的实现告诉大家.#include "Utf8.h"void ConvertGBKToUtf8(char *strGBK , int maxlen ){    int len=MultiByteToWideChar(CP_ACP, 0, (LPCTSTR)st

hangmwll的专栏 3298

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

常用字符集编码详解:ASCII 、GB2312、GBK、GB18030、UTF-8、unicode

ASCII ASCII码是7位编码,编码范围是0x00-0x7F。ASCII字符集包括英文字母、阿拉伯数字和标点符号等字符。其中0x00-0x20和0x7F共33个控制字符。 只支持ASCII码的系统会忽略每个字节的最高位,只认为低7位是有效位。HZ字符编码就是早期为了在只支持7位ASCII系统中传输中文而设计的编码。早期很多邮件系统也只支持ASCII编码,为了传输中文邮件必须使用B

zhoubl668的专栏:远帆,梦之帆! 2万+

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

GB2312、GB18030、GBK、UNICODE、BIG5之间兼容关系

1, 常用字符集分类 ASCII及其扩展字符集 作用:表语英语及西欧语言。 位数:ASCII是用7位表示的,能表示128个字符;其扩展使用8位表示,表示256个字符。 范围:ASCII从00到7F,扩展从00到FF。 ISO-8859-1字符集 作用:扩展ASCII,表示西欧、希腊语等。 位数:8位, 范围:从00到FF,兼容ASCII字符集。 GB2312字符集 作用:国家简体中文字符集,兼容A

903

ASCII、GB2312、Unicode和UTF-8

ANSI:文件的编码就是两个字节D1 CF,这正是严的 GB2312 编码,这也暗示 GB2312 是采用大头方式存储的。Unicode:编码是四个字节,其中FF FE表明是小头方式存储,真正的编码是4E 25。Unicode big endian:编码是四个字节,其中FE FF表明是大头方式存储。UTF-8:编码是六个字节,前三个字节EF BB BF表示这是UTF-8编码,后三个E4B8A5就是严的具体编码,它的存储顺序与编码顺序是一致的。

weixin_44623642的博客 2365

ASCII、GB2312和Unicode

  浅出地解释了ASCII、GB2312和Unicode之间的关系。

九宫霓虹 1124

ASCII,unicode, utf8 ,big5 ,gb2312,gbk,gb18030等几种常用编码区别

最近老为编码问题而烦燥,下定决心一定要将其弄明白!本文主要总结网上一些朋友提供的 ascii,ISO-8859-1,unicode, utf8,gb2312,big5,gbk,gb18030等几种常区别.      1. ASCII码     目前计算机中用得最广泛的字符集及其编码,是由美国国家标准局(ANSI)制定的ASCII码(American Standard Code for Inf

yusongwhu的专栏 1762

ASCII、ISO8859-1、GB2312、GBK、GB18030、BIG5、UNICODE、UTF-8、ANSI等字符集编码的讲解与特点

世界是不断进步的,有了新需求就会产生新的事物。首先我们要知道在程序中经常遇到一些关于乱码的问题,而产生乱码的原因就是因为计算机直接存储字符时要把字符转为二进制,这其中不同的转换规则就对应不同的编码方式, 所以要不出现乱码就必须编码方式和解码方式要保持一致。(主讲解,我们一般不用理解太深) ▪ ASCII:是一种使用7个或8个二进制位进行编码的方案(美国信息交换标准(代)码),最多可以给256个字符(包括字母、数字、标点符号、控制字符及其他符号)分配(或指定)数值,ASCII码正是最早用来将127字符.

lkjrk的博客 1777
上一篇: JAVA多线程分析
下一篇: 一些J2ME开发的FAQ
aspnet2002web
博客等级 码龄21年 482粉丝 310原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值