求解关于JAVA中字符编码的问题

问题描述

我们都知道JAVA中的char类型是占两个字节,如下:publicclassgetcharcode{publicstaticvoidmain(String[]args){Strings="A";Stringr="王";System.out.println(s.getBytes().length);System.out.println(r.getBytes().length);Charactera='a';Characterb='啊';Integerc=5;System.out.println(a.SIZE);System.out.println(b.SIZE);System.out.println(c.SIZE);}}输出的是12161632为什么一个英文字符输出长度为1,而一个汉字输出长度为2,还是说一个英文字符占一个字节,一个汉字占两个字节如果是这样的话,为什么英文和汉字所占的位数都是16???还有如果每个字符占两个字节的话,关于DataOuputStream类的writeChars(Strings)方法会将每个字符的两个字节都写到文本中,那为什么在文本中显示的是乱码只有字母能正常显示(字节都写进去了啊!!)

解决方案

解决方案二:
顶求人来解答啊、、、、、、、、、、、、
解决方案三:
System.out.println(a.SIZE);System.out.println(b.SIZE);

虽然你定义了中、英文,但是这两句让你输出a和b它们类型的位数即Character,而SIZE是Character类的静态变量,值是16.(Character.SIZE),所以都输出16.
解决方案四:
1字符=2字节;1字节=8位英文占一个字节中文占一个字符,也就是两个字节1k=2^10;b:位;B:字节1kb=1024位1kB=1024字节(引)
解决方案五:
引用3楼xiaolong806124的回复:

1字符=2字节;1字节=8位英文占一个字节中文占一个字符,也就是两个字节1k=2^10;b:位;B:字节1kb=1024位1kB=1024字节(引)

xiaolong806124讲得很明白,另补充一点,在数据库中比如Oracle,汉字是占三个字节的,在实际应用中需要这些。
解决方案六:
位:Bit一个二进制数据,比如0或1就是1bit字节:Byte1byte=8bit1英文字母=1byte=8bit1中文汉字=2byte=16bit存储空间:数据库存储空间默认也是字节,也跟字符集有关,为数据库间中文转换,建议使用nchar、nvarchar、ntext等数据库类型
解决方案七:
英文占一个字节??可是java中不是说char类型是占两个字节的么?????chars=‘A’;这个s到底占两个字节还是一个字节??????
解决方案八:
英文占一个字节??可是java中不是说char类型是占两个字节的么?????chars=‘A’;这个s到底占两个字节还是一个字节??????
解决方案九:
引用1楼hcc2426775354的回复:

顶求人来解答啊、、、、、、、、、、、、


解决方案十:
顶一个求高人帮助
解决方案十一:
要搞的清楚,还需深入研究过程。。。

时间: 2024-07-30 01:39:30

求解关于JAVA中字符编码的问题的相关文章

关于java中字符编码的一点心得,可能对初学者有点帮助

编码|初学|心得 这是张孝祥老师的java就业培训视频教程里面的一道题目有所变动编写下面的程序代码分析和观察程序的运行结果 import java.io.*;public class TestCodeIO {      public static void main(String[] args) throws Exception{            InputStreamReader isr = new InputStreamReader(System.in,"iso8859-1"

Java中字符编码格式详解_java

一.前言 在分析Comparable和Comparator的时候,分析到了String类的compareTo方法,String底层是用char[]数组来存放元素,在比较的时候是比较的两个字符串的字符,字符用char来存储,此时,突然想到,Java里面的char可以存放中文吗?后来发现是可以的,并且由此也引出了Java中字符的编码格式问题. 二.Java存储格式 在Java中,如下代码获取了字符'张'的各种编码格式. import java.io.UnsupportedEncodingExcept

深入解析Java中的编码转换以及编码和解码操作_java

一.Java编码转换过程 我们总是用一个java类文件和用户进行最直接的交互(输入.输出),这些交互内容包含的文字可能会包含中文.无论这些java类是与数据库交互,还是与前端页面交互,他们的生命周期总是这样的:  (1).程序员在操作系统上通过编辑器编写程序代码并且以.java的格式保存操作系统中,这些文件我们称之为源文件.  (2).通过JDK中的javac.exe编译这些源文件形成.class类.  (3).直接运行这些类或者部署在WEB容器中运行,得到输出结果.  这些过程是从宏观上面来观

JAVA里字符编码的探索与理解

编码 今天终于把JAVA里一个比较头痛的问题--字符编码弄清晰了,所以写一篇文章来纪念一下,也为大家提供一点自己的心得. 众所周知,JAVA为了国际通用,用的是UNICODE来保存里面的字符.而UNICODE只是一个种字符集,字符的存储和表示要用到一定的字符编码格式,而与UNICODE对应的字符编码格式就是我们常看到的UTF-8,UTF-16等等,而UTF-8是最常用的,所以人们常常把它和UNICODE等同起来(我以前就是这样的),这在某些情况下是没有错的,但这样的理解在JAVA里就会产生一些混

Python中字符编码简介、方法及使用建议_python

1. 字符编码简介 1.1. ASCII ASCII(American Standard Code for Information Interchange),是一种单字节的编码.计算机世界里一开始只有英文,而单字节可以表示256个不同的字符,可以表示所有的英文字符和许多的控制符号.不过ASCII只用到了其中的一半(\x80以下),这也是MBCS得以实现的基础. 1.2. MBCS 然而计算机世界里很快就有了其他语言,单字节的ASCII已无法满足需求.后来每个语言就制定了一套自己的编码,由于单字节

求解:java中main()函数问题

问题描述 java新手,一个小问题已头疼两天,信心大减,急求解决!!!!源程序如下:publicclassw{publicstaticvoidmain(String[]args){System.out.println("welcome");}}文件在D:javaLessonlesson1下存放运行状如下:D:javaLessonlesson1>javacw.javaD:javaLessonlesson1>javawExceptioninthread"main&qu

java中字符转换

转换 1.字符转换为ASCII值char y='a';int x = (int)y;System.out.println(x); 以上将得到a的ascii值97 -------------------------------- 2.十进制转换成16进制数Integer.toHexString(101) --------------------------------3.ASCII值转换成字符String aa=String.valueOf((char)13);

java中处理字符编码(网页与数据库)(转)

首先声明一下,此文章时从网上转载的.如下的某些方法是确实管用,但是从中发现了有一点不足,就是原文笔者没考虑使用不同Web Server时出现的情况,比如文章里我用红色字体画出来的部分代码在Tomcat跑的时候得用他说的方法,不过到了WebSphere的时候必须得用原先的 String name = request.getParameter("name"); 所以采取本文方法的时候不要太死板,多试试.  在Java编程中,中文字体编码难倒了不少程序员,如果抓住了影响Java中文显示的几个

问个字符编码的问题java

问题描述 问个字符编码的问题java unicode字符编码,gbk是英文一个字节中文2个字节,utf-8是英文一个字节,中文3个字节.可在java中,char型数据无论中英文都是2个字节,char型数据是对应什么什么编码?还有什么字符编码可否简单的介绍一二? 解决方案 编码多呢.这是我电脑上安装的所有编码 IBM EBCDIC (US-Canada)OEM United StatesIBM EBCDIC (International)Arabic (ASMO 708)Arabic (DOS)G