`
悲剧了
  • 浏览: 145201 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

字符集与编码方式测试理解

阅读更多
字符集跟编码方式是两个不同的概念,大体:字符集是文字的集合,编码方式是文字转换成具体二进制的规则

问题:
一个文件用GBK编码,写了中文字符集
那么UTF-8使用它的时候,需要注意什么

一个有意思的小测试
在src下面放置两个文件,原始的文件


back那个代码设置为utf-8编码 下面的java代码也utf-8编码,gbk-utf.txt那个文件设置为GBK编码,随便打点汉字
public class IOCharsetConvert {
	
	public static void main(String[] args) throws Exception {
		//为了方便测试,此处用绝对路径,好修改文件编码
		String path="D:\\springdemo1.0\\src\\main\\java\\";
		String fileNamePrimitive=path+"gbk-utf8.txt";
		List<String> list=read(fileNamePrimitive, "GBK");
		BackFile(path+"gbk-utf8-back.txt", list);
						
	}
	private static List<String> read(String fileName,String convertCharSet) throws Exception{
		BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream(fileName),convertCharSet));
		List<String> sbuffer=new ArrayList<String>();
		String str=null;
		while((str=br.readLine()) != null){
			sbuffer.add(str);
			System.out.println("test-->>"+str);
		}
		br.close();
		return sbuffer;
	}
	
	public static void BackFile(String backFileName,List<String> strbuffer) throws IOException{
		BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(backFileName)));
		for(String str:strbuffer){
			bw.write(str);
		}
		bw.flush();
		bw.close();
	}

}

1.运行代码--查看对应的back文件,编码没有问题,汉字一切正常
2.back编码与java代码编码不一致,运行程序,查看效果,乱码
3.编码一致的时候哪怕都是gbk或者utf-8 一切正常


结论:
这些中文字符集跟GBK对应存放在底层的具体二级制形式,我们在UTF-8中使用这些二级制肯定不能对应出UTF-8对应的中文字符,那么我们用不上这个二级制,能用上的只有字符

我们的java文件时UTF-8编码的,那么GBK按照读入进来的字符,就是在UTF-8里面增加字符
最后输出是怎样的?把这些UTF-8表示的字符按照二级制输出到对应文件,这个文件底层当然是二级制表示的,所以必须以java代码的编码格式来查看
  • 大小: 1.5 KB
分享到:
评论

相关推荐

    ISO8859-1字符集与其他字符集兼容性测试

    标题“ISO8859-1字符集与其他字符集兼容性测试”涉及到的是字符编码标准的问题,这是一个在计算机科学和信息技术领域中至关重要的概念。字符集定义了如何将字符(如字母、数字、符号)转化为二进制表示,以便计算机...

    常用字符集编码[参考].pdf

    Unicode 是一种通用的字符集编码标准,提供了一个 universal 和 unique 的字符集编码方式。UTF-8 是 Unicode 的一种变长编码方式,使用 1 到 4 个字节表示一个 Unicode 字符。UTF-8 编码的优点是可以与 ASCII 编码...

    ORACLE 字符集简介

    由于ORACLE支持多种语言及字符集,并且在存储、检索、迁移Oracle数据时,字符集的设置至关重要,因此数据库开发和管理人员经常会遇到与字符集相关的问题。了解字符集的基本知识对于避免这些问题非常重要。 #### 三...

    关于GBK和Unicode字符集转换乱码问题

    ### 关于GBK和Unicode字符集转换乱码问题 在计算机科学与互联网技术中...通过正确理解字符集的原理、使用适当的工具和技术手段、以及严谨的测试流程,可以有效地避免和解决乱码问题,从而提高数据处理的准确性和效率。

    NORWEI 字符集收藏

    标题 "NORWEI 字符集收藏" 暗示了这个压缩包可能包含与字符集、编码方式或特定的“NORWEI”字符集有关的资源。字符集是计算机处理文字的基础,用于将字符编码为数字,使得计算机能够理解和显示各种语言的文字。在...

    GB18030字符集输出

    双字节编码方式适用于扩展的GBK字符集,包含了大量未在GB2312中出现的汉字。四字节编码则用来表示那些更为生僻或特殊用途的字符,这使得GB18030能够涵盖几乎所有的中文字符。 在输出GB18030字符集时,通常会涉及到...

    oracle 10g xe 版本更改数据库字符集

    1. **字符集**:用于表示文字和符号的数据编码方式。Oracle数据库支持多种字符集,包括单字节、双字节等。 2. **国家字符集**:用于表示非西文字符(如汉字)的字符集,通常与数据库字符集相匹配。 3. **ALTER ...

    Lucene 字符编码问题

    5. **测试和验证**:在生产环境部署前,使用不同语言和字符集的数据进行充分的测试,确保在各种情况下都能正确处理字符编码。 总的来说,理解字符编码并在Lucene中正确处理它,对于构建稳定、高效的全文搜索引擎至...

    mysql数据库互相转换及同步工具-MySQL_MySQL字符集互转

    1. **字符集的概念**:字符集是数据库用来表示文本字符的编码方式,例如ASCII、ISO-8859-1、UTF-8等。不同的字符集支持的字符范围和占用的存储空间不同。 2. **MySQL字符集转换**:在MySQL中,可以使用ALTER TABLE...

    Java解决WE8DEC字符集乱码问题

    字符集定义了一组可用的字符,如ASCII、ISO-8859-1或WE8DEC,而编码是将字符集中的字符转换为二进制表示的方式,例如UTF-8或GBK。Java中,`Charset`类用于处理字符集和编码转换。 2. **Java中的字符编码** Java...

    AIXOracle10G字符集修改.rar

    10. **验证与测试**:通过插入、查询和更新数据,验证字符集更改后是否正常工作。同时,检查用户连接、应用程序和报表是否受影响。 11. **更新客户端配置**:数据库字符集改变后,所有连接到该数据库的客户端也需要...

    解决ORACLE字符集转化的方法技术.pdf

    字符集定义了一组特定的字符及其对应的编码,例如ASCII字符集主要包含英文字符,而不适合存储汉字。在Oracle数据库中,早期版本如Oracle 7以前,通常使用US7ASCII字符集。而UTF8字符集则支持更广泛的字符,包括多种...

    Unicode2GB UTF8ToGB 字符集转换(跨平台)

    UTF-8是一种变长的Unicode编码方式,它使用1到4个字节来表示一个字符,广泛用于网络传输和存储。GBK是基于GB2312的,它是单字节和双字节编码的混合,可以看作是简体中文的扩展GBK版本。 在C++中进行字符集转换,...

    基于字符集、字符编码与HTTP编码解码之万象详解

    在IT领域,字符集、字符编码以及HTTP编码解码是理解和解决乱码问题的关键概念。本文将深入探讨这些概念,并提供.NET框架中的实际应用示例。 字符集是计算机系统能够识别和表示的所有字符的集合,它包括各国文字、...

    在不同字符集数据库间导入数据的方法

    首先,我们需要理解US7ASCII和ZHS16GBK字符集的基本概念。US7ASCII是一种基于ASCII的字符集,主要支持英文和其他西欧语言的基本字符。而ZHS16GBK是专为中文设计的双字节字符集,它包含了大量汉字以及其他一些中文...

    unicode字符和多字节字符的相互转换接口及测试工程

    Unicode字符集是一种广泛采用的标准,它包含了世界上几乎所有的字符,而多字节字符则是一种用于表示Unicode字符的编码方式。本项目着重于提供Unicode字符与多字节字符之间的转换接口,并通过实际测试工程验证其功能...

    数据结构哈夫曼编码实验报告.doc

    4. 打印编码规则:展示字符与其对应的哈夫曼编码,便于查看和理解编码方式。 在数据结构设计方面,实验采用了以下方法: 1. 哈夫曼树的存储使用静态链表。通过定义一个结构体数组`HuffNode`,包含节点的权值、父...

    C++编译器对字符串的编码转换.pdf

    - **ANSI字符串**:在VC++.NET中,开发者可以选择Unicode或多字节字符集(MBCS)编译模式。在非Unicode模式下,ANSI字符串处理方式与VC++6.0类似。 - **Unicode字符串**:在Unicode模式下,VC++.NET同样使用UTF-16...

    字符解码转换软件.zip

    这是因为不同的编码方式对字符的表示方式不同,如果用错误的编码打开文件,原本的字符可能无法正确显示。例如,一个使用GBK编码的中文文档在被误认为是UTF-8编码时打开,就会出现乱码。此时,"字符解码转换软件"就派...

    字符编码转化、libiconv、gb18030

    字符编码是计算机处理文本的基础,不同的编码方式对字符集的支持程度和表示范围各有不同。本文将深入探讨字符编码转化、libiconv库以及GB18030编码,这些都是在跨平台开发或处理多语言文本时至关重要的概念。 首先...

Global site tag (gtag.js) - Google Analytics