精华内容
下载资源
问答
  • import java.io....* 创建日期:2012-7-16 下午4:28:16* @author:tianyj* @update:$Date$* @version:$Revision$* @since 版本号,用来指定该类是从整个项目的哪个版本开始加入到项目中的*/publ...

    import java.io.UnsupportedEncodingException;

    /**

    *

    *

    * 描述:

        功能描述,该部分必须以中文句号结尾。

    * 创建日期:2012-7-16 下午4:28:16

    * @author:tianyj

    * @update:$Date$

    * @version:$Revision$

    * @since 版本号,用来指定该类是从整个项目的哪个版本开始加入到项目中的

    */

    public class ConvertCharSet {

    private static String changeCharSet(

    String str, String newCharset) throws UnsupportedEncodingException {

    if (str != null) {

    // 用默认字符编码解码字符串。

    byte[] bs = str.getBytes();

    // 用新的字符编码生成字符串

    return new String(bs, newCharset);

    }

    return str;

    }

    /**

    * 字符串转化为UTF-8

    * @param str

    * @return

    */

    public static String toUTF8(String str){

    String result = str;

    try {

    result = changeCharSet(str, "UTF-8");

    } catch (UnsupportedEncodingException e) {

    e.printStackTrace();

    }

    return result;

    }

    /**

    * 字节数组转化为UTF-8

    * @param bty

    * @return

    */

    public static String toUTF8(byte[] bty){

    try {

    if (bty.length > 0) {

    return new String(bty, "UTF-8");

    }

    } catch (UnsupportedEncodingException e) {

    e.printStackTrace();

    }

    return new String(bty);

    }

    }

    展开全文
  • Java中ASC码与字符互相转化_... /** * Java 中 ASC 码与字符互相转化......JAVA 字符串转日期或日期转字符串(转) 2010-08-16 16:34:03| 分类: java |字号 订阅 JAVA 字符串转日期或日期转字符串(转) 文章中,用的 AP...

    Java中ASC码与字符互相转化_计算机软件及应用_IT/计算机_专业资料。Java 中 ASC 码与字符互相转化 packagecom.ljq.test; /** * Java 中 ASC 码与字符互相转化......

    JAVA 字符串转日期或日期转字符串(转) 2010-08-16 16:34:03| 分类: java |字号 订阅 JAVA 字符串转日期或日期转字符串(转) 文章中,用的 API 是 Simple......

    Java中有时候需要读取一个文本类的文件,将其转换为字符串,然后做进一步处理。Java中没有现成的API方法,自己手动实现一个,大家来分享。 一、字符串转换为文件 /*......

    JAVA 字符串转日期或日期转字符串(转) 2010-08-16 16:34:03| 分类: |字号 订阅 JAVA 字符串转日期或日期转字符串(转) 文章中,用的 API 是 SimpleDate......

    java中文字符串转换为拼音_其它语言学习_外语学习_教育专区。java 中文字符串转换为拼音 内部有缺陷,多音字无法识别,如各位有更好技术希望和我分享。谢谢 ......

    java 各种数字类型转换成字符串型_计算机软件及应用_IT/计算机_专业资料。java 各种数字类型转换成字符串型 各种数字类型转换成字符串型: String s = String.value......

    Java语言中使用的字符是 ___ 字符集。 ( ) A.8位ASCII编码B.16位ASCII编码C.16位Unicode编码D.32位Unicode编码正确答案及相关解析 正确答案 C 解析 暂无......

    Cxw 个人观点,勿转 Java 采用三种方法实现字符串逆序输出 Publicc...

    java数据类型-数据转换-转义字符_计算机软件及应用_IT/计算机_专业资料。数据类型:整型(byte、short、int、long) 数值类型 基本 类型 实型(float、double) 字符型......

    为了减少存储和传输英文字符数据的数据量,可 以使用 UTF-8 编码。 UTF-8 全称是 Eight-bit UCS Transformation Format(UCS,Universal Character Set,通用字符集,......

    截取子串 String substring(int startIndex) String substring(int startIndex,int endIndex) Java 字符串转换成日期 import java.text.DateFormat; import java.tex......

    java字符集编码_IT/计算机_专业资料。ASCII(American Standard Code for Information Interchange,美国信息互换标准代码),是基于常用的英文字符的一套电脑编码系统。我们......

    Java Web 应用程序开发中典型 的 MVC 框架模式,具有耦合性低、重用性高、可维护性高等优点.然而实际开发 中,总会遇到各种字符乱码问题.介绍了字符集和字符编码相关......

    Java的字符类型采用的是Unicode编码方案,每个Unicode码占用()个...

    对于UTF-8编码格式的文本文件,其前3个字节的值就是-17、-69、-65,所以,判定是否是UTF-8编码格式的代码片段如下: java.io.File f=new java.io.File("待......

    本文从开发人员耗费大量精力的汉字编码问题出发,分析了在Java中可能会产生编码问题的两个环节,并对不同情况给出了有效的解决方法。 ...

    &useUnicode=True&characterEncoding=gbk 但是,如果使用一个已经存在的数据库,数据库的编码方式是ISO-8859-1,而Web应用中使用UTF-8,且......

    将十六进制 Unicode 编码字符串文件转换为可读文件的 Java 程序事情起因就是我手头有好些文件都带有 Unicode 编码字符串, 具体显示效果是这样的: ” \\u51fd\\u......

    1. 在eclipse窗口中输入中文字符,并保存成UTF-8的JAVA文件。这里发生了多次字符编码转换。不过因为我们相信eclipse的正确性,所以我们不用分析其中的过程,只需要相信......

    [解析] 本题具体考查Java语言对字符类型编码方案的理解。与C++语言不同,Java的字符类型采用的是Unicode编码方案,而Unicode编码方案每个字符占用2个字节。故本题答案......

    展开全文
  • JS下的GBK和UTF16编码转换

    千次阅读 2018-06-06 14:13:37
    转换的原理是将GBK编码范围内的字符全部提取出来,并获取其对应的GBK编码和UTF-16编码,生成两张对照表。因为两者都是双字节编码(UTF-16有少量不常用汉字采用4字节编码,因为没有找到这部分数据,先不做处理),...

    JS中使用的是UTF-16编码,因为历史原因,中心端接收的数据是GBK编码的,因此在数据发送和接收时需要进行转换操作。转换的原理是将GBK编码范围内的字符全部提取出来,并获取其对应的GBK编码和UTF-16编码,生成两张对照表。因为两者都是双字节编码(UTF-16有少量不常用汉字采用4字节编码,因为没有找到这部分数据,先不做处理),所以同一个字符在两个表的位置是一样的,这样就可以获取到对应的编码了。

    编码数据的获取是通过Android程序来实现

    获取全部GBK编码范围内的字符文本(CharsetUtils.java)

        /**
         * 获取一段GBK编码范围内的字符串, 总体编码范围为 8140-FEFE
         * 
         * @param start
         *            编码起始值, 大于等于0x8140
         * @param end
         *            编码结束值, 小于等于0xFEFE
         * @return
         */
        public static String getGBKTable(int start, int end) {
            StringBuilder sb = new StringBuilder(10000);
            if (start < 0x8140) {
                start = 0x8140;
            }
            if (end < start || end > 0xFEFF) {
                end = 0xFEFF;
            }
            int highStart = (start >> 8) & 0xff;
            int lowStart = start & 0xff;
            int highEnd = (end >> 8) & 0xff;
            int lowEnd = end & 0xff;
            byte[] data = new byte[2];
            try {
                for (int high = highStart; high <= highEnd; high++) {
                    for (int low = lowStart; low < lowEnd; low++) {
                        // 跳过0xXX7F这个空白的码位
                        if (low == 0x7F) {
                            continue;
                        }
    
                        // 跳过空白码位, 用户自定义区: F8A1-FEFE
                        if (high >= 0xF8 && low > 0xA0) {
                            continue;
                        }
                        // 跳过用户自定义区: A140-A7A0
                        if (high >= 0xA1 && high <= 0xA7) {
                            if (low <= 0xA0) {
                                continue;
                            }
                        }
                        data[0] = (byte) (high);
                        data[1] = (byte) (low);
                        sb.append(new String(data, "GBK"));
                    }
                }
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
            return sb.toString();
        }
    

    获取文本的GBK编码,将编码转为4位十六进制数(如C4A1),编码间以逗号隔开。UTF-16编码也是类似处理,只是有分大小端两种模式,实际测试中在Android平台上是大端(0xFFFE打头),JS平台下是小端的,因此需要做一个高低位掉换。将获取的编码都保存到文件以便于导入到JS代码中。

        private void getTotalTable() {
            String totalStr = CharsetUtils.getGBKTable(0x8140, 0xFEFF);
            getGbkCodeFile(totalStr);
            getUtfCodeFile(totalStr);
    
            FileManager.writeFile(GbkTableFile, totalStr);
            // 显示字符串的片段
            EditText edit = (EditText) findViewById(R.id.edit_hanzi);
            edit.setText(totalStr.substring(0, 100));
            Toast.makeText(GBKToUTFActivity.this, "合计输出GBK字符 " + totalStr.length(), Toast.LENGTH_SHORT).show();
        }
    
        private void getGbkCodeFile(String input) {
            try {
                StringBuffer sb = new StringBuffer(input.length() * 4);
                byte[] gbkArray = input.getBytes("GBK");
                for (int i = 0; i < gbkArray.length; i++) {
                    int a = byteToInt(gbkArray[i]);
                    int b = byteToInt(gbkArray[++i]);
                    sb.append(String.format("%04x,", a * 256 + b));
                }
                String fileName = Constant.CRM_DIR + "/gbk_code.txt";
                FileManager.writeFile(fileName, sb.substring(0, sb.length() - 1).toUpperCase());
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
        }
    
        private void getUtfCodeFile(String input) {
            try {
                StringBuffer sb = new StringBuffer(input.length() * 4);
                byte[] utfArray = input.getBytes("UTF-16");
                // 判断当前平台是大端还是小端
    //            boolean isBigEndian = false;
    //            if (utfArray[0] == -1 && utfArray[1] == -2) {
    //                isBigEndian = true;
    //            }
                for (int i = 2; i < utfArray.length; i++) {
                    int a = byteToInt(utfArray[i]);
                    int b = byteToInt(utfArray[++i]);
                    sb.append(String.format("%04x,", b * 256 + a));
                }
                String fileName = Constant.CRM_DIR + "/utf_code.txt";
                FileManager.writeFile(fileName, sb.substring(0, sb.length() - 1).toUpperCase());
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
        }
        
        /**
         * 将字节转化为整型
         * 
         * @param a
         * @return 整数
         */
        private int byteToInt(byte a) {
            return (a & 0xff);
        }
    

    JS端的转换接口

    UTF-16编码数据片段如下格式,从前述接口获取到的"utf_code.txt"文件中获得

    UnicodeCharTable =
    	'4E02,4E04,4E05,4E06,4E0F,4E12,4E17,4E1F,4E20,4E21,4E23,4E26,4E29,4E2E,4E2F,4E31,4E33,4E35,4E37,4E3C,4E40,4E41,
    	...
    	E862,E863,E864';
    

    GBK编码数据片段如下格式,从前述接口获取到的"gbk_code.txt"文件中获得

    GBKCharTable =
    	'8140,8141,8142,8143,8144,8145,8146,8147,8148,8149,814A,814B,814C,814D,814E,814F,8150,8151,8152,8153,8154,8155,
    	...
    	FE9B,FE9C,FE9D,FE9E,FE9F,FEA0';
    

    GBK字节流转字符串调用:UTF16StrToGBKArray,字符串转GBK字节流调用:GBKArrayToUTF16Str

    	/**
    	 * 将unicode通过查表转换,转为gbk的code
    	 * @param {Number} chrCode 字符unicode编码
    	 */
    	UniCode2GBKCode(chrCode) {
    		let chrHex = chrCode.toString(16).toUpperCase();
    		let i = this.UnicodeCharTable.indexOf(chrHex);
    		if (i != -1) {
    			chrHex = this.GBKCharTable.substr(i, 4);
    		}
    		return parseInt(chrHex, 16)
    	};
    	/**
    	 * 将gbk的对应的code通过查表转换,转为unicode
    	 * @param {Number} chrCode gbk字符对应的编码
    	 */
    	GBKCode2UniCode(chrCode) {
    		//以16进制形式输出字符串
    		let chrHex = chrCode.toString(16).toUpperCase();
    		let i = this.GBKCharTable.indexOf(chrHex);
    		if (i != -1) {
    			chrHex = this.UnicodeCharTable.substr(i, 4);
    		}
    		return parseInt(chrHex, 16)
    	};
    
    	/**
    	 * 将utf16编码的字符串(js内置编码)转为GBK编码的字节流数组
    	 * @param {String} str utf16编码的字符串(js内置)
    	 * @return {Array} 转换后gbk编码的字节流数组
    	 */
    	UTF16StrToGBKArray(str) {
    		let res = [];
    		if (!str) {
    			return res;
    		}
    
    		let len = str.length;
    		for (let i = 0; i < len; i++) {
    			//获得对应的unicode码
    			let code = str.charCodeAt(i);
    			if (code < 0) {
    				code += 65536;
    			}
    			if (code > 127) {
    				code = this.UniCode2GBKCode(code);
    			}
    			if (code > 255) {
    				let varlow = code & 65280;
    				varlow = varlow >> 8;
    				//取得高位
    				let varhigh = code & 255;
    				res.push(varlow);
    				res.push(varhigh);
    			} else {
    				res.push(code);
    			}
    		}
    		return res;
    	};
    
    	/**
    	 * 将GBK编码的文本数组转为utf16编码的字符串(js内置编码)
    	 * @param {[String]} array GBK编码的数组
    	 * @return {String} 转化后的utf16字符串
    	 */
    	GBKArrayToUTF16Str(array) {
    		if (!array) {
    			return '';
    		}
    		//res是用来存放结果的字符数组,最终会转为字符串返回
    		let res = [];
    		let len = array.length;
    		for (let i = 0; i < len; i++) {
    			let code = array[i];
    			//如果不是ASCII码转为unicode
    			if (code > 127) {
    				code = this.GBKCode2UniCode((code << 8) + array[++i]);
    			}
    			res.push(String.fromCharCode(code));
    		}
    		return res.join('');
    	};
    
    

    源码下载地址:
    GBK和UTF-16编码的转换接口


    参考资料:

    GBK编码范围

    汉字字符集编码查询

    展开全文
  • 为什么需要本文,因为在对接某些很老的接口的时候,需要传递过去的是16进制的hex字符串,并且要求对传的字符串做编码,这里就介绍了utf-8 Unicode bytes 等等。#英文使用utf-8 转换成16进制hex字符串的方法newstr = ...

    为什么需要本文,因为在对接某些很老的接口的时候,需要传递过去的是16进制的hex字符串,并且要求对传的字符串做编码,这里就介绍了utf-8 Unicode bytes 等等。

    #英文使用utf-8 转换成16进制hex字符串的方法

    newstr = 'asd'

    b_str = bytes(newstr,encoding='utf-8')

    print(b_str)

    hex_str = b_str.hex() #将bytes类型转换成16进制的hex字符串

    print(hex_str) #字节码转16进制hex的方法

    print(bytes.fromhex(hex_str).decode('utf-8')) #将16进制hex字符串转换成bytes,然后在转换成字符串

    print(type('中文'.encode('utf-8')),'中文'.encode('unicode_escape'),'中文123456'.encode('unicode_escape').decode('utf-8'))

    #中文转换成Unicode的一种方法之一

    u_str = '中文123456'

    b_str = bytes(u_str,encoding='unicode_escape')

    h_u_s = b_str.hex()print ("u4e2du6587") #Unicode编码可直接输出

    #中文使用Unicode转换成bytes再转换成16进制hex方法 包含英文和数字

    u_cn = '中文asd123'

    hex_msg = bytes(u_cn,encoding='utf_16_be').hex()

    #这是特殊要求下最终的解决方案

    #注意在Python3中已经没有了直接将字符串变成bytes或者Unicode的方法了

    #也就是说,在Python中 u'中文'已经不再奏效

    #bytes转str

    b_str = bytes('中文',encoding='utf-8')

    print(b_str.decode()) #直接输出为普通字符串

    以上这篇Python3编码问题 Unicode utf-8 bytes互转方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

    展开全文
  • # coding: utf-8 ''' 参考用 mystery = b"\xe5\x88\xab" x = mystery.decode('utf-8') print(x) y = bytearray.fromhex(\xe5\x88\xab).decode() print(y) ''' ... a = input('输入UTF-8的16进制...
  • var ServerMessagefunction utf8to16(str) {var out, i, len, c;var char2, char3;out = "";len = str.length;i = 0;while(i < len) {c = str.charCodeAt(i++);switch(c >> 4){case 0: case 1: case 2: cas...
  • 自:http://www.cnblogs.com/dragon2012/p/5020259.html UTF-16是Unicode字符集的...UTF-16编码规则如下: 2.2.1 从U+D800到U+DFFF的码位(代理区) 因为Unicode字符集的编码值范围为0-0x10FFFF,而大于等于0...
  • utf16<=> utf8 <=> ascii <=>unicode 所有代码都已经经过验证。而且里面也有相应的例子。 所有的编码格式进行转换,windows平台。
  • Phone / iPad的,Android的4.4+和Windows 8.1+是原生支持Emoji繪文字符號。這裡有五個大類845繪文字符號。無需安裝任何應用程序或軟件, ...如果想要把笑脸 [e]1f604[/e] ...编码转来转去.烦死了.。
  • 1.UTF-16编码方式源于UCS-2(Universal Character Set coded in 2 octets、2-byte Universal Character Set)。而UCS-2,是早期遗留下来的历史产物。UCS-2将字符编号直接映射为字符编码(CEF,而非CES,详见前文中对...
  • 写在前面的话 ...UTF-16转UTF-8 UTF-16转GBK UTF-16UTF-8之间的转换 UTF-16和GBK之间的转换 不同编码转换的理论基础 不同的编码直接如何转换的,这里先简单的描述下UTF-16UTF-8、GBK直接的...
  • UTF-16编码方式源于UCS-2(Universal Character Set coded in 2 octets、2-byte Universal Character Set)。而UCS-2,是早期遗留下来的历史产物。 UCS-2将字符编号直接映射为字符编码(CEF,而非CES,详见前文中对...
  • 最近使用到了mysql-connector-cpp,通过这个库获取到的字符串类型是mysql::string,其实其实质就是mysql自己实现的wstring。 如果直接进行转换: ...所以我们必须先将utf-16字符串转化为utf-8的字符串。...
  • 概述 当你在前端需要通过二进制数据与服务端进行通信时,你可能会遇到二进制数据的...本文通过对utfx.js这个库的代码进行分析,带大家深入了解UTF8和UTF16这两种编码方式在JavaScript中的转换方法,同时加深对Unicod...
  • 其次,存在字节类,它只是字节序列,通常表示存储在编码中的字符串(如utf-8或iso-8859-15).这对您意味着什么?据我了解,您想读写utf-8文件.让我们编写一个程序,用“?”字符替换所有“?”def main():# Let...
  • 代码片段: ``` String s="hello你好"; String s1 = new String(s.getBytes("UTF-8"), "UTF-16");...问题来源:rpc请求 返回的是utf-16编码字符串 用的时候需要utf-8 按照上面的代码 会出现乱码问题
  • utf16编码格式

    2015-12-04 19:25:00
    UTF-16编码规则如下: 2.2.1 从U+D800到U+DFFF的码位(代理区) 因为Unicode字符集的编码值范围为0-0x10FFFF,而大于等于0x10000的辅助平面区的编码值无法用2个字节来表示,所以Unicode标准规定:基本多语言平面...
  • 包含GBK和UTF16字符集的对照表,用于将GBK字节流和UTF字符串之间的互相转换。
  • unicode 分为utf-32 (占4个字节),utf-16(占两个字节),utf-8(占1-4个字节),所以utf-16 是最常用的unicode版本,但是在文件里存的还是utf-8,因为utf8省空间 在python 3,encode编码的同时会把stringl变成bytes类型,...
  • 文章目录前言简述ASCIIGBKUnicodeUTF-8应用场景开发环境编码转换16进制数值转换为16进制字符16进制数值转化为字符16进制字符串转换为Unicode字符串Unicode字符串转化为16进制字符串总结参考资料 前言 字符编码方式...
  • UTF-16】 说到 UTF 必须要提到 Unicode(Universal Code 统一码),ISO 试图想创建一个全新的超语言字典,世界上所有的语言都可以通过这本字典来相互翻译。可想而知这个字典是多么的复杂,关于 Unicode 的详细...
  •  我们知道计算机其实挺笨的,它只认识0101这样的字符串,当然了我们看这样的01串时肯定会比较头晕的,所以很多时候为了描述简单都用十进制,十六进制,八进制表示.实际上都是等价的,没啥太多不一样.其他啥文字图片之类的...
  • 字符集 ...UTF8、UTF16、UCS2/UCS4(区别) 窄字符和宽字符字符: 宽字符字符编码转换方法 1.使用C++标准库codecvt、locale、use_facet https://zh.cppreference.com/w/cpp/locale/codecvt ...
  • /** * * * UTF-16 charset 使用 16 位量,因此对字节顺序敏感。 流的字节顺序可以由 Unicode 字符 /uFEFF * 所表示的初始字节顺序标记 来指示。 * * UTF-16BE 16 位 UCS 转换格式,Big Endian(最低地址存放高位...
  • 整理这篇文章的动机是两个问题:问题一:使用Windows记事本的“另存为”,可以在GBK、Unicode、Unicode big endian和UTF-8这几种编码方式间相互转换。同样是txt文件,Windows是怎样识别编码方式的呢?我很早前就发现...
  • 1.UTF-16编码方式源于UCS-2(Universal Character Set coded in 2 octets、2-byte Universal Character Set)。而UCS-2,是早期遗留下来的历史产物。UCS-2将字符编号直接映射为字符编码(CEF,而非CES,详见前文中对...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,149
精华内容 459
关键字:

utf16编码转字符