文档章节

中文转为unicode编码

Simon丶Ma
 Simon丶Ma
发布于 2016/04/14 14:45
字数 880
阅读 6
收藏 0

中文转为unicode编码


什么是Unicode:
在创造Unicode之前针对各种语言有几百种编码系统,而且这些编码系统也相互冲突,给不同语言系统的电脑进行交流带来了麻烦。因为两种相同的字符在不同的编码系统可能有完全不同的意思,这些不同甚至会对电脑带来危害。于是Unicode出现了,Unicode给每个字符提供了一个唯一的数字,不论是什么平台,不论是什么程序,不论是什么语言。它真正实现了全球电脑系统的United,作为一个标准,它已经成为全球软件技术最重要的发展趋势。
为什么要把中文转换为Unicode
在互联网高速发展的今天,Unicode担当更重要的角色它比传统的字符编码更节省费用,使软件或者网站能够运用于不同的系统平台、语言和国家,而不需要重建,同时也保证了资料在不同系统中的完整性。所以说你只要将中文转换为Unicode,任何国家的人都能看到你想表达的真正意思,而不是乱码。
举例
中文原码(GB2312):叁肆伍陆柒捌
转为Unicode后: 叁肆伍陆柒捌网页效果为:叁肆伍陆柒捌
提示:改变网页编码为其它任何国家、语言的编码试试,始终能看见上面红色的Unicode中文。

var mode="zhuan";
function encode(obj,btn){
   if(mode=="zhuan"){
       obj.value=obj.value.replace(/[^\u0000-\u00FF]/g,function($0){return escape($0).replace(/(%u)(\w{4})/gi,"&#x$2;")});
       btn.value="还原";
       mode="huan";
   }else{
       obj.value=unescape(obj.value.replace(/&#x/g,'%u').replace(/;/g,''));
       btn.value="转化";
       mode="zhuan";
   }
}


未知:
Function Str_Gb2UniCode(text:String):String;
var
 i,j,len:integer;
 cur:integer;
 t:String;
 ws:widestring;
begin
 Result:='';
 ws:=text;
 len:=length(ws);
 i:=1;
 j:=0;
while i<=len do
 begin
    cur:=ord(ws[i]);
    FmtStr(t,'%4.4X',[cur]);//BCD转换
    Result:=Result+t;
    inc(i);
     j:=(j+1)mod7;//移位计数器达7要特殊处理
   end;
end;  

JAVA
  

 将中文转为unicode 及转回中文函数
//转为unicodepublic static void writeUnicode(final DataOutputStream out, final String value) {
try {
final String unicode = gbEncoding( value );
final byte[] data = unicode.getBytes();
final int dataLength = data.length;

System.out.println( "Data Length is: " + dataLength );
System.out.println( "Data is: " + value );
out.writeInt( dataLength ); //先写出字符串的长度
out.write( data, 0, dataLength ); //然后写出转化后的字符串
} catch (IOException e) {

}
}


public static String gbEncoding( final String gbString ) {
char[] utfBytes = gbString.toCharArray();
String unicodeBytes = "";
for( int byteIndex = 0; byteIndex < utfBytes.length; byteIndex ++ ) {
String hexB = Integer.toHexString( utfBytes[ byteIndex ] );
if( hexB.length() <= 2 ) {
hexB = "00" + hexB;
}
unicodeBytes = unicodeBytes + "\\\\u" + hexB;
}
System.out.println( "unicodeBytes is: " + unicodeBytes );
return unicodeBytes;
}


/** *//*****************************************************
功能介绍:unicode字符串转为汉字
输入参数:unicode字符串
输出参数:转换后的字符串
*****************************************************/
private String decodeUnicode( final String dataStr ) {
int start = 0;
int end = 0;
final StringBuffer buffer = new StringBuffer();
while( start > -1 ) {
end = dataStr.indexOf( "\\\\u", start + 2 );
String charStr = "";
if( end == -1 ) {
charStr = dataStr.substring( start + 2, dataStr.length() );
} else {
charStr = dataStr.substring( start + 2, end);
}
char letter = (char) Integer.parseInt( charStr, 16 ); // 16进制parse整形字符串。
buffer.append( new Character( letter ).toString() );
start = end;
}
return buffer.toString();
}



JSP
/** ToUnicode.java*/ 
package com.edgewww.util;
 
import java.io.*;
 
/** 
字符串转换成Unicode码的类
 *@author  栾金奎 jsp@shanghai.com
 * @date 2001-03-05
 */ 
public class ToUnicode{
 
/** 
把字符串转换成Unicode
 *@param  strText 待转换的字符串
 *@param  code 转换前字符串的编码,如"GBK"
 *@return 转换后的Unicode码字符串
 */ 
public String toUnicode(String strText,String code)throws UnsupportedEncodingException{
   char c;
   String strRet= "" ;
   int intAsc;
   String strHex;
   strText= new String(strText.getBytes("8859_1"),code);
   for (int i= 0; i< strText.length(); i++ ){
     c= strText.charAt(i);
     intAsc= (int)c;
     if(intAsc>128){
       strHex= Integer.toHexString(intAsc);
       strRet= strRet+ "&#x" + strHex+";";
     } 
    else{
       strRet= strRet+ c;
     } 
  } 
  return strRet ;
 } 



/** 应用举例*/ 
/** gbk2Unicode.jsp*/ 
<meta http-equiv="Content-Type" content="text/html; charset=big5"> 
<jsp:useBean id="g2u" scope="session" class="com.edgewww.util.ToUnicode"/> 
<% String lang= "这是简体中文";%> 
<br> 
<%=lang%> 
<br> 
<%=g2u.toUnicode(lang,"GBK")%> 

 

 

© 著作权归作者所有

Simon丶Ma
粉丝 4
博文 134
码字总数 299850
作品 0
深圳
程序员
私信 提问
echo json_encode() 输出中文不显示

PHP默认的jsonencode编码出来的是unicode编码的,也就是u的编码,用PHP的jsonencode来处理中文的时候, 中文都会被编码, 变成不可读的, 类似”u***”的格式。 虽然unicode编码可以在不同的页面...

ITCHN
2016/12/19
1K
0
在Python中使用中文

在Python中使用中文 这个问题曾在我初学Python的时候令我头疼不已,尤其是目前我们因为各种包的原因还只能使用2.x的版本。在3.x中字符编码已经统一用Unicode了。 Python 默认支持的是ASCII字...

Airship
2016/08/09
14
0
Python Unicode与中文处理(转)

Python Unicode与中文处理 python中的unicode是让人很困惑、比较难以理解的问题,本文力求彻底解决这些问题; 1.unicode、gbk、gb2312、utf-8的关系; http://www.pythonclub.org/python-bas...

coldlemon
2014/01/04
308
0
python 的 string 和 PyQt 的 QString 的区别

以下在 Python2.6和PyQt4.4.4 for Python2,6环境下讨论: Python中有两种有关字符的类型:Python string object和Python Unicode object。主要使用Python string object进行数据输入输出。 ...

不必在乎朕是谁
2013/08/26
636
0
Python字符串的encode与decode研究心得乱码问题解决方法

Python字符串的encode与decode研究心得乱码问题解决方法发布:dxy 字体:[增加 减小] 类型:转载为什么Python使用过程中会出现各式各样的乱码问题,明明是中文字符却显示成“xe4xb8xadxe6x96...

Sophia_tj
2013/01/03
380
2

没有更多内容

加载失败,请刷新页面

加载更多

Qt程序打包发布方法(使用官方提供的windeployqt工具)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/toTheUnknown/article/details/81748179 如果使用到了Qt ...

shzwork
20分钟前
2
0
MainThreadSupport

MainThreadSupport EventBus 3.0 中的代码片段. org.greenrobot.eventbus.MainThreadSupport 定义一个接口,并给出默认实现类. 调用者可以在EventBus的构建者中替换该实现. public interface ...

马湖村第九后羿
40分钟前
3
0
指定要使用的形状来代替文字的显示

控制手机键盘弹出的功能只能在ios上实现,安卓是实现不了的,所以安卓只能使用type类型来控制键盘类型,例如你要弹出数字键盘就使用type="number",如果要弹出电话键盘就使用type="tel",但这...

前端老手
50分钟前
6
0
总结:Raft协议

一、Raft协议是什么? 分布式一致性算法。即解决分布式系统中各个副本数据一致性问题。 二、Raft的日志广播过程 发送日志到所有Followers(Raft中将非Leader节点称为Follower)。 Followers收...

浮躁的码农
58分钟前
7
0
Flask-admin Model View字段介绍

Model View字段介绍 can_create = True 是否可以创建can_edit = True 是否可以编辑can_delete = True 是否可以删除list_template = 'admin/model/list.html' 修改显......

dillonxiao
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部