文档章节

【java基础之字符问题】UTF-8和GBK的区别与联系

卯金刀GG
 卯金刀GG
发布于 2018/04/14 17:59
字数 485
阅读 7
收藏 0

基础概念:

1 字符集
字符集就是编码的集合,例如unicode、GBK、GB2312等都属于字符集。

2 编码
编码就是字符的表现形式,例如unicode字符集就能够用UTF-8、UTF-16UTF-32编码。

GBK与UTF-8转换的核心问题分析。
GBK是一种字符集,而UTF-8是一种编码,因此通常我们研究的GBK与UTF-8的转换问题,其实就是GBK与Unicode字符集的转化问题,由于GBK和Unicode的字符(主要讨论汉字字符)之间没有必然的联系,因此通常是采用查表的方法来实现GBK和Unicode之间的转化。在完成GBK与Unicode编码的转化后,剩下的工作就是如何把Unicode以UTF-8的形式表现出来了。

搞清楚编码问题,接下来要做的就是如何进行编码转换?在linux平台下,有iconv()函数可供使用,那么在Windows平台下该如何处理呢?其实处理的方法有很多,如Windows API / IBM ICU4C 等,作者推荐使用windows平台下的iconv()函数,因为相对于使用Windows API,iconv库可以方便的跨平台;而相对于IBM公司的ICU4C, iconv库要小很多。

下面给出几个windows下 iconv库的链接:
(1) MinGW使用的编译好的库,能够直接使用。
      http://sourceforge.net/projects/mingw/files/MinGW/Base/libiconv/libiconv-1.14-2/

(2) GNU开源源代码,需要之间编译成相应的动态库或者是静态库。
      http://www.gnu.org/software/libiconv/
      这个iconv源代码需要自己编译。下面给出在Windows下使用MinGW和MSYS编译的过程。
       (a) 安装autoconf工具
         (b)   依次执行下列命令(编译为静态库)
                  ./configure --prefix=/home --enable-static --disable-shared
                   make
                   make install
                   那么编译后,在/home目录中就会看到编译后的输出。

本文转载自:https://zhidao.baidu.com/question/1989069319409000747.html

卯金刀GG
粉丝 27
博文 261
码字总数 70945
作品 0
昌平
程序员
私信 提问
new String(str.getBytes("iso8859-1"), "UTF-8");

1.编码基础知识 最早的编码是iso8859-1,和ascii编码相似。但为了方便表示各种各样的语言,逐渐出现了很多标准编码,重要的有如下几个。 1.1. iso8859-1 通常叫做Latin-1 属于单字节编码,最...

八戒_o
2015/11/09
0
0
Win10系统下eclipse的基本配置 编码格式 classpath原理 import工作机制

eclipse是用来编译java文件的一个软件 国内也有汉化版,我也不知道该怎么上传……忘了从哪里搞来了 不过用了一段时间就还原原来的配置了因为网上的教程之类的方法都是英文版的 为了和网上的配...

codingcoge
2018/03/17
0
0
JAVA之编码/解码 -- 各种环境下可能会发生的乱码问题及解决方案

工作中经常遇到java编码问题,由于缺乏研究,总是无法给出确切的答案,这个周末在网上查了一些资料,在此做些汇总。 问题一:在java中读取文件时应该采用什么编码? Java读取文件的方式总体可...

roockee
2013/10/22
0
0
java unicode转GBK

我们经常会遇到编码问题。Java号称国际化的语言,是因为它的class文件采用UTF-8,而JVM运行时使用UTF-16(至于为什么JVM中要采用UTF-16,我没看过 相关的资料,但我猜可能是因为JAVA里面一个...

圣洁之子
2015/03/02
0
0
怎么处理警告:编码 GBK 的不可映射字符

Question: 怎么处理警告:编码 GBK 的不可映射字符 解决: 一般做项目公司都会统一要求文件编码类型,很多为了实现应用国际化和本地化和更高的性能,而选用UTF-8而非GBK。 但在开发过程中我们...

澜fish
2014/03/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

【从入门到放弃-Java】并发编程-锁-synchronized

简介 上篇【从入门到放弃-Java】并发编程-线程安全中,我们了解到,可以通过加锁机制来保护共享对象,来实现线程安全。 synchronized是java提供的一种内置的锁机制。通过synchronized关键字同...

阿里云云栖社区
29分钟前
1
0
数据可视化分析除了需要编码的Python,还有更简单的方式吗?

大数据、数据分析的兴起和火爆,也带动了数据可视化的广泛应用。说起数据分析和可视化的关系,就好比你为一堆散乱的拼图写了一份说明,告诉他这个数据是什么样子,代表什么。可以说,数据可视...

NBI大数据可视化
44分钟前
0
0
远程桌面中文版使用时的问题原因及解决办法

  微软现在更新了远程桌面服务的中文补丁,但是即便是中文的,在使用的过程中还是会出现很多问题, 下面几个问题出现的原因和解决办法,请大家知晓。   1 找不到指定的远程计算机。确认输...

takethelas
53分钟前
0
0
PostgreSQL在启动时如何分配共享缓存

相信很多人知道 shared_buffers 这个参数,它设置共享缓存的大小,本篇简单讲一下它是怎样分配的。 1、参数设置(src/backend/utils/misc/guc.c) /* * We sometimes multiply the numbe...

有理想的猪
58分钟前
4
0
jsonFormat注解导致时间后台和页面差8小时

阿里云提醒fastjson < 1.2.51 远程代码执行漏洞。 jar包升级1.1.40升级到1.2.58后前台和后台拿到的时间数据差8小时。 解决方法,在实体注解上添加内容 @JsonFormat(pattern = "yyyy-MM-dd HH...

S三少S
59分钟前
49
2

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部