LinuxGod

LinuxGod.net
Linux大神网——精选每一篇高品质的技术干货
  1. 首页
  2. 开源快讯
  3. 正文

中文乱码问题详解:内容索引字符集与编码相关知识

2023年8月14日 226点热度

英文乱码问题解读政府事业部-劳动人事开发部郭志龙guozl@英文乱码问题解读:内容索引字符集与编码相关知识•字符与编码的发展•字符串在显存中的储存方式•字节、字符、字符串•字符集与编码•常用编码规则简介•编程中的字符与编码•JAVA程序中的编码实现JSP编程英文乱码问题症结及问题汇总•英文编码问题的症结•英文编码问题出现的环节•JSP文件的汉字问题•表单处理中的汉字问题•Servlet的汉字问题•JDBC的汉字问题英文乱码问题解读:字符与编码的发展字符与编码的发展,从计算机对多国语言的支持角度看,大致可以分为三个阶段:•使用ASCII编码支持中文语言阶段(英语)中文DOS•使用ANSI编码支持多种语言阶段(本地化)英文DOS,英文Windows95/98,韩文Windows95/98•在UNICODE被采用以后(国际化)WindowsNT/2000/XP...,Linux中文linux操作系统,Java英文乱码问题解读:字符与编码的发展•计算机开始只支持英文linux文件中文乱码,其它语言不能在计算机上储存和显示。

•为使计算机支持更多语言,一般使用0x80~0xFF范围的2个字节来表示1个字符。诸如:汉字'中'在英文操作系统中,使用[0xD6,0xD0]这两个字节储存。•不同的国家和地区拟定了不同的标准,由此形成了GB2312,BIG5,JIS等各自的编码标准。那些使用2个字节来代表一个字符的各类汉字延展编码方法linux学习视频,称为ANSI编码。在繁体英文系统下,ANSI编码代表GB2312编码,在英文操作系统下,ANSI编码代表JIS编码。•不同ANSI编码之间互不兼容,当信息在国际间交流时,未能将属于两种语言的文字,储存在同一段ANSI编码的文本中。•为了国际间信息交流愈加便捷,国际组织制订了UNICODE字符集,为各类语言中的每一个字符设定了统一而且惟一的数字编号,以满足跨语言、跨平台进行文本转换、处理的要求。英文乱码问题解读:字符串在显存中的储存方式在使用ASCII编码支持中文语言阶段:单字节字符使用一个字节储存一个字符(SBCS)。例如,"Bob123"在显存中为:426F6231323300Bob123英文乱码问题解读:字符串在显存中的储存方式在使用ANSI编码支持多种语言阶段:每位字符使用一个字节或多个字节来表示(MBCS),为此,这些方法储存的字符也被叫做多字节字符。

例如,"英文123"在英文Windows95显存中为7个字节,每位汉字占2个字节,每位英语和数字字符占1个字节:D66DD00CECCEC431323300英文123英文乱码问题解读:字符串在显存中的储存方式在UNICODE被采用以后:计算机储存字符串时,改为储存每位字符在UNICODE字符集中的序号。目前计算机通常使用2个字节(16位)来储存一个序号(DBCS),为此,这些方法储存的字符也被叫做宽字节字符。例如,字符串"英文123"在Windows2000下,显存中实际储存的是5个序号,一共占用10个字节:2D4E87653100320033000000英文123英文乱码问题解读:字节、字符、字符串概念描述举例'1','中','a','$',字符人们使用的记号,具象意义上的一个符号。'¥',……计算机中储存数据的单元,一个8位的二进0x01,0x45,字节制数,是一个很具体的储存空间。0xFA,……在显存中,假如"字符"是以ANSI编码形ANSI式存在的,一个字符可能使用一个字节或"英文123"字符串多个字节来表示,这么我们称这些字符串(占7字节)为ANSI字符串或则多字节字符串。

在显存中,假如"字符"是以在UNICODEUNICODE"英文123"中的序号存在的,这么我们称这些字符串字符串(占10字节)为UNICODE字符串或则宽字节字符串。英文乱码问题解读:字节、字符、字符串因为不同ANSI编码所规定的标准是不相同的,为此,对于一个给定的多字节字符串,我们必须晓得它采用的是哪一种编码规则,才才能晓得它包含了什么"字符"。而对于UNICODE字符串来说,不管在哪些环境下,它所代表的"字符"内容总是不变的。英文乱码问题解读:字符集与编码各个国家和地区所制订的不同ANSI编码标准中,都只规定了各自语言所需的"字符"。诸如:汉字标准(GB2312)中没有规定日本语字符如何存贮。这种ANSI编码标准所规定的内容包含两层涵义:•使用什么字符。也就是说什么汉字,字母和符号会被收入标准中。所包含"字符"的集合就称作"字符集"。•规定每位"字符"分别用一个字节还是多个字节储存,用什么字节来储存,这个规定就称作"编码"。各个国家和地区在制定员码标准的时侯,"字符的集合"和"编码"通常都是同时制订的。为此,平时我们所说的"字符集",例如:GB2312,GBK,JIS等,不仅有"字符的集合"这层涵义外,同时也包含了"编码"的含意。

"UNICODE字符集"包含了各类语言中使用到的所有"字符"。拿来给UNICODE字符集编码的标准有好多种,例如:UTF-8,UTF-7,UTF-16,UnicodeLittle,UnicodeBig等。英文乱码问题解读:常用编码简介依照编码规则的特性,把所有的编码分成三类:单字节字符编码、ANSI编码、UNICODE编码单字节字符编码:•编码标准:ISO-8859-1•编码原理:是最简单的编码规则,每一个字节直接作为一个UNICODE字符。例如,[0xD6,0xD0]这两个字节,通过iso-8859-1转化为字符串时,将直接得到[0x00D6,0x00D0]两个UNICODE字符,即"ÖÐ"。反之,将UNICODE字符串通过iso-8859-1转化为字节串时,只能正常转化0~255范围的字符。英文乱码问题解读:常用编码简介ANSI编码:•编码标准:GB2312;BIG5;Shift_JIS;ISO-8859-2…•编码原理:把UNICODE字符串通过ANSI编码转化为"字节串"时,按照各自编码的规定,一个UNICODE字符可能转化成一个字节或多个字节。

反之,将字节串转化成字符串时,也可能多个字节转化成一个字符。例如,[0xD6,0xD0]这两个字节,通过GB2312转化为字符串时,将得到[0x4E2D]一个字符,即'中'字。•"ANSI编码"的特征:1.这种"ANSI编码标准"都只能处理各自语言范围之内的UNICODE字符。2."UNICODE字符"与"转换下来的字节"之间的关系是人为规定的。英文乱码问题解读:常用编码简介UNICODE编码:•编码标准:UTF-8;UTF-16;UnicodeBig…•编码原理:与"ANSI编码"类似的,把字符串通过UNICODE编码转化成"字节串"时,一个UNICODE字符可能转化成一个字节或多个字节。•与"ANSI编码"不同的是:1.这种"UNICODE编码"才能处理所有的UNICODE字符。2."UNICODE字符"与"转换下来的字节"之间是可以通过估算得到的。英文乱码问题解读:常用编码简介编程中比较常用的编码有:UTF-8,GBK,GB2312,ISO-8859-1•不仅ISO-8859-1之外的其它三个编码都能挺好的支持英文,但它们都兼容ISO-8859-1的编码(就是说无论编码如何改变,只要是ISO-8859-1中的字符,永远不会出现乱码)。

•这四种编码中,GB2312是中国规定的汉字编码,也可以说是繁体英文的字符集编码;GBK是GB2312的扩充,不仅兼容GB2312外,它能够显示简体英文linux文件中文乱码,还有日语的假名;而UTF-8其实也支持英文,但却与GB码不兼容(编码值不同)。UTF-8使用的是可变长的UNICODE编码,编码可能是1位16补码(即ISO-8859-1中的字符,其编码也是相同的)也有可能是2位或3位的16补码。UTF-8的优点是:•与CPU字节次序无关,可以在不同平台之间交流。•容错能力高,任何一个字节受损后,最多只会造成一个编码码位损失,不会链锁错误(如GB码错一个字节都会整行乱码),所以在国际化处理中基本都是建议使用UTF-8作为编码。英文乱码问题解读:编程中的字符与编码在C++和Java中,拿来代表"字符"和"字节"的数据类型及编码方式:类型或操作C++Java字符wchar_tchar字节charbyteANSI字符串char[]byte[]UNICODE字符串wchar_t[]Stringmbstowcs(),string=newString(bytes,字节串→字符串MultiByteToWideChar()"encoding")wcstombs(),bytes=字符串→字节串WideCharToMultiByte()string.getBytes("encoding")以上须要注意几点:•Java中的char代表一个"UNICODE字符(宽字节字符)",而C++中的char代表一个字节。

•MultiByteToWideChar()和WideCharToMultiByte()是WindowsAPI函数。英文乱码问题解读:JAVA程序中的编码实现•字符串类String中的内容是UNICODE字符串://Java代码,直接写英文Stringstr="英文123";//得到厚度为5,由于是5个字符System.out.println(str.length());•字符串I/O操作,字符与字节转换操作。在Java包java.io.*中,以"Stream"结尾的类通常是拿来操作"字节串"的类,以"Reader","Writer"结尾的类通常是拿来操作"字符串"的类。字符串与字节串间互相转化,示例如下://依照GB2312得到字节(得到多字节字符串)byte[]bytes=str.getBytes("GB2312");//从字节根据GB2312得到UNICODE字符串str=newString(bytes,"GB2312");英文乱码问题解读:JAVA程序中的编码实现要将String根据某种编码写入文本文件,有两种方式:•第一种办法:用Stream类写入早已根据指定编码转化好的字节串OutputStreamos=newFileOutputStream("1.txt");os.write(bytes);os.close();•第二种办法:构造指定编码的Writer来写入字符串Writerwr=newOutputStreamWriter(newFileOutputStream("2.txt"),"GB2312");wr.write(str);wr.close();最后得到的1.txt和2.txt都是7个字节JSP编程英文乱码问题症结及问题汇总政府事业部-劳动人事开发部郭志龙guozl@英文乱码问题汇总:内容索引字符集与编码相关知识•字符与编码的发展•字符串在显存中的储存方式•字节、字符、字符串•字符集与编码•常用编码规则简介•编程中的字符与编码•JAVA程序中的编码实现JSP编程英文乱码问题症结及问题汇总•英文编码问题的症结•英文编码问题出现的环节•JSP文件的汉字问题•表单处理中的汉字问题•Servlet的汉字问题•JDBC的汉字问题英文乱码问题汇总:英文编码问题的症结•顾客端和服务器用GB2312•HTTP传输编码用ISO8859-1•服务器须要指示顾客端文档的编码方法英文乱码问题汇总:英文编码问题出现的环节1.顾客端显示文档时的编码方法(由服务器中的JSP、Servlet指明)2.顾客端发送汉字时手动转换为ISO8859-13.服务器中采用GB2312对汉字编码,接收到顾客端汉字须要转换为GB23124.服务器端将JSP转换为Servlet时手动将汉字转换为ISO8859-15.服务器端应当告诉顾客端汉字的编码方法英文乱码问题汇总:英文编码问题出现的环节•JSP文件的汉字问题•表单处理中的汉字问题•Servlet的汉字问题•JDBC的汉字问题英文乱码问题汇总:JSP文件的汉字问题•JSP中的汉字字符串在服务器端用GB2312•在编译为Servlet时手动转换为ISO8859-1•汉字在传输中是正确的•在没有非常指示下,浏览器中未能正确显示在HTML手指示浏览器文档的编码:在JSP手指示JSP引擎文档的编码:每位要显示汉字的JSP文档都应当包含该句子英文乱码问题汇总:JSP文件的汉字问题您好英文乱码问题汇总:JSP文件的汉字问题

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: ansi编码 gb2312 unicode 字符串函数 字符编码
最后更新:2023年8月14日

Linux大神网

每日更新,欢迎收藏♥ 不积跬步无以至千里,加油,共勉。

点赞
< 上一篇
下一篇 >

Linux大神网

每日更新,欢迎收藏♥
不积跬步无以至千里,加油,共勉。

最新 热点 随机
最新 热点 随机
Linux文件系统种类 如何卸载用源码包安装的软件?在线视频教程推荐 「职位」ASP.、PHP、Linux服务器集群开发 Torvalds:Linux内核开发的创新前景充满了热情 Linux文件系统的结构从终端窗口探索Linux目录树结构 卸载软件命令Linux.You linux软件开发如何入门?学习Linux步骤及学习方法介绍 14年Linux发行版的有趣历史观点 Linux中不像Windows可以直接在控制面板中卸载? 2018年波及众多Linux发行版的性能对比会更加深入 如何用源码包安装的软件?name的方法总结 Linux之父李纳斯托瓦兹开发的Linux只是一个内核 Linux系统中的apt和apt-get的区别及解决办法! Linux系统发行版的一种方法,除此以外 MacM1上安装Docker和CentOS,您需要遵循的步骤 linux光驱启动怎么设置 常见的几种设置方法,你知道几个? 关于ESXi主机磁盘空间回收的具体操作步骤及步骤 Linux设置显示中文和设置字体设置中文一个都不能少 如何在Linux系统中使用命令查看Linux发行版版本信息 电脑的系统出现问题需要修复时光驱,两种设置方法
嵌入式Linux操作系统学习规划+LINUX路线,主攻江苏电信天翼校园客户端故障指引及解决办法(101)英特尔GMAGMA950显卡驱动程序/WIN8/8.1电信校园网宽带用USB数据线共享给电脑无线上网国防科大开源操作系统:它只是一个吉祥的象征10个常用Linux文本查看命令及其详细说明和使用示例Linux嵌入式系统内核裁剪与定制方法的介绍情况淘宝教育热卖C语言编程开发C++程序设计零基础入门课程从CPU、内存、硬盘、显卡等这些方面安装Linux系统的最低配置Linux通过chkconfig设置开机启动服务创建的几种常见方式(技术分析)Linux多线程的使用与操作系统的区别通常rar命令由一个主命令加若干选项(可选)构成RedHatLinux中自动运行程序中的应用linux 读写文件 关于Linux内核的神秘面纱,你知道几个?使用wget实用程序的有用命令行工具的使用怎么设置linux开机项自启动?方式是怎样的?嵌入式Linux应用层与驱动层要想学习关于Linux内核的交叉编译步骤和方法:步骤、方法STM32嵌入式linux开发流程及应用程序分析-STMlinux下有哪些文件在介绍lsof命令实用用法介绍?
BT4Track的核心不再使用lzma格式的squashfs作为livecd 如何找到Linux内核的版本号?或全部答案来修复 安装linux的系统光驱redhat安装的方法 Linux基础入门(VMWare中CentOS7配置yum)目录之间的加载顺序 大多数Ubuntu系统默认安装完是没有中文输入法的详细安装方法 bash:批量修改文件名称的方法总结(一)-苏州安嘉 宝塔安装使用SSH连接工具,Linux服务器连接的基本介绍 Net编程自动调试监视工具(AutoFor.Net) 腦/網絡>操作系統/系統-alternate-i386.iso(EXT)这几个版本有什么区别 UNIX系统内核设计的基本原理及特点分析!! Fedora17中也用ibus的拼音输入法,感觉还不错 Linux系统中怎么安装软件?应用程序与系统命令的区别 老男孩教育怎么样有哪些课程?-八维教育 RedHatLinux-安装MySQL入门到精通 编程之家 Linux基础命令推荐书籍:《Linux就该这么学》 《构建高性能web站点》推荐理由及方法都能找到 电脑的系统出现问题需要修复时光驱,两种设置方法 【报错日志】一下升级linux内核的启动顺序为0 从单片机到嵌入式Linux的特点是软硬件可裁剪
标签聚合
文件目录 虚拟机 软件 linux系统 操作 应用 命令 内核 linux服务器 文件
书籍
课程
技术群
技术干货大合集↓
  • 2023年9月 / 69篇
  • 2023年8月 / 93篇
  • 2023年7月 / 94篇
  • 2023年6月 / 90篇
  • 2023年5月 / 93篇
  • 2023年4月 / 90篇
  • 2023年3月 / 129篇
  • 2023年2月 / 84篇
  • 2023年1月 / 161篇
  • 2022年12月 / 187篇
  • 2022年11月 / 76篇
友情链接:

Linux书籍 | Linux命令 | Linux系统 | RHCE红帽认证 | Linux软件 | Linux教程 | CentOS系统 | Linux内核 | Linux服务器 | Linux大神 | IT资源

COPYRIGHT © 2023 linuxgod.net ALL RIGHTS RESERVED.