java中编码与解码分别指什么?

Python013

java中编码与解码分别指什么?,第1张

java中编码:URLEncoder.encode(strUri,"utf-8")

java中解码码:URLDecoder.decode(strUri,"utf-8")

java编码和解码        

流读取文件,具有转换编码功能的有:OutputStreamWriter和InputStreamReader,

构造器有如:

InputStreamReader(InputStream in, String charsetName)

创建使用指定字符集的 InputStreamReader。

OutputStreamWriter(OutputStream out, String charsetName)

创建使用指定字符集的 OutputStreamWriter。

处理字符串编码问题:

重新对获取的字符串进行编码:Byte[] bytes = str.getBytes(String encodeCharsetNam)

重新对bytes进行解码,创建新的字符串对象:str = new String(Byte[] bytes,String decodeCharsetName)

一般结合使用:str = new String(str.getBytes(String encodeCharsetName),String decodeCharsetName)

例如:resultName=new String(username.getBytes("ISO-8859-1"),"UTF-8")

还可以加入判断:

if(!Charset.forName("gbk").newEncoder().canEncode(str)){str = new Strin(str.getBytes("ISO-8859-1"),"UTF-8")}else{str = new String(str.getBytes("ISO-8859-1"),"gbk")}

处理请求参数传递编码问题:

java中编码:URLEncoder.encode(strUri,"utf-8")

java中解码码:URLDecoder.decode(strUri,"utf-8")

js中编码:encodeURIComponent(strUri)encodeURI(strUri)escape(str)

js中解码:decodeURIComponent(strUri)decodeURI(strUri)unescape(str)

补充概念

URI组件:主机、端口、路径、查询参数、片段等。

URI组件分隔符::/?#&[]@,冒号用于分隔协议和主机,/用于分隔主机和 路径,?用于分隔路径和查询参数,&用于分隔多个查询参数等。

URI中的不安全字符或保留字符: ! * ‘ ( ) : @ &= + $ , / ? # [ ] 他们具有特殊作用,例如上面的分隔作用。

URI允许出现的字符:只允许包含英文字母(a-zA-Z)、数字(0-9)、-_.~4个特殊字符以及所有保留字符,其他字符均需要经过编码之后才能出现在Url中,比如使用保留字符的原意,而不是特殊作用。

js向java/jsp的编码与解码:

js中编码:encodeURI(encodeURI(strUri))decodeURIComponent(decodeURIComponent(strUri))

java/jsp中解码: java.net.URLDecoder.decode(strUri,"UTF-8")

js中编码两次的问题:如果使用一次编码,在浏览器地址栏里,浏览器认为%是个转义字符,浏览器会把%与%之间的编码值,两位两位取出后进行解码。

然后再传递给处理页面,然后由处理页面进行再次解码,这样前面就缺少了一次编码过程,所以前面需要连续两次编码。

java课程设计例子

Java如何获取文件编码格式

1:简单判断是UTF-8或不是UTF-8,因为一般除了UTF-8之外就是GBK,所以就设置默认为GBK。

按照给定的字符集存储文件时,在文件的最开头的三个字节中就有可能存储着编码信息,所以,基本的原理就是只要读出文件前三个字节,判定这些字节的值,就可以得知其编码的格式。其实,如果项目运行的平台就是中文操作系统,如果这些文本文件在项目内产生,即开发人员可以控制文本的编码格式,只要判定两种常见的编码就可以了:GBK和UTF-8。由于中文Windows默认的编码是GBK,所以一般只要判定UTF-8编码格式。

对于UTF-8编码格式的文本文件,其前3个字节的值就是-17、-69、-65,所以,判定是否是UTF-8编码格式的代码片段如下:

File file = new File(path)

InputStream in= new java.io.FileInputStream(file)

byte[] b = new byte[3]

in.read(b)

in.close()

if (b[0] == -17 &&b[1] == -69 &&b[2] == -65)

System.out.println(file.getName() + ":编码为UTF-8")

else

System.out.println(file.getName() + ":可能是GBK,也可能是其他编码")

可以直接在开发工具中设置java文件的编码:

eclipse文件编码设置:

1. 点击window。

2. 在列表最下点击reference。

3. 在reference界面点击Workspace

4. 在右边的Tex file encoding点击Other。

5. 选择 GBK或者 UTF-8编码即可。