`

黑马程序员24-7:编码解码、联通、按字节截取字符串

 
阅读更多

------- android培训 java培训、期待与您交流!-------


package cn.itcast.io.p7.encode;

import java.io.IOException;
import java.io.UnsupportedEncodingException;

public class EncodeDemo {

	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException {

		/*
		 * 字符串 --> 字节数组:编码。
		 * 字节数组 --> 字符串:解码。
		 * 
		 * 你好:GBK:  -60 -29 -70 -61
		 * 
		 * 你好: utf-8: -28 -67 -96 -27 -91 -67 
		 * 
		 * 
		 * 如果你编错了,解不出来。
		 * 如果编对了,解错了,有可能有救。
		 */
		
		String str = "谢谢";
		
		byte[] buf = str.getBytes("gbk");
		
		String s1 = new String(buf,"UTF-8");
		
		System.out.println("s1="+s1);
		
		
		byte[] buf2 = s1.getBytes("UTF-8");//获取源字节.
		
		printBytes(buf2);//-17 -65 -67 -17 -65 -67 -17 -65 -67 
					//-17 -65 -67 -17 -65 -67 -17 -65 -67 -17 -65 -67
					//-48 -69 -48 -69 
		String s2 = new String(buf2,"GBK");
		
		System.out.println("s2="+s2);
		
		
//		encodeDemo(str);
		
		
		
	}

	/**
	 * @param str
	 * @throws UnsupportedEncodingException
	 */
	public static void encodeDemo(String str)
			throws UnsupportedEncodingException {
		//编码;
		byte[] buf = str.getBytes("UTF-8");
		
//		printBytes(buf);
		
		//解码:
		String s1 = new String(buf,"UTF-8");
		
		System.out.println("s1="+s1);
	}

	private static void printBytes(byte[] buf) {
		for(byte b : buf){
			System.out.print(b +" ");
		}
	}

}



package cn.itcast.io.p7.encode;

import java.io.IOException;
import java.io.UnsupportedEncodingException;

public class LianTong {

	/**
	 * @param args
	 * @throws IOException 
	 */

	
	public static void main(String[] args) throws IOException {
		
		String str = "jͨ";
		/*
		11000001
		10101010
		11001101
		10101000
		*/

		
		byte[] buf = str.getBytes("gbk");
		
		for(byte b :buf){
			System.out.println(Integer.toBinaryString(b&255));
		}
	}
	
}


package cn.itcast.io.p7.encode;

import java.io.IOException;


public class Test {

	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException {
		
		String str = "ab你好cd谢谢";
//		str = "ab琲琲cd琲琲";
		
//		int len = str.getBytes("gbk").length;		
//		for(int x=0; x<len; x++){
//			System.out.println("截取"+(x+1)+"个字节结果是:"+cutStringByByte(str, x+1));
//		}
		
		int len = str.getBytes("utf-8").length;		
		for(int x=0; x<len; x++){
			System.out.println("截取"+(x+1)+"个字节结果是:"+cutStringByU8Byte(str, x+1));
		}
		
		
		
//		String str = "琲";
//		byte[] buf = str.getBytes("gbk");
//		for(byte b : buf){
//			System.out.println(b);//-84  105 
//		}
			
	}
	
	/*
	  	在java中,字符串“abcd”与字符串“ab你好”的长度是一样,都是四个字符。
		但对应的字节数不同,一个汉字占两个字节。
		定义一个方法,按照最大的字节数来取子串。
		如:对于“ab你好”,如果取三个字节,那么子串就是ab与“你”字的半个,
		那么半个就要舍弃。如果去四个字节就是“ab你”,取五个字节还是“ab你”.
		
		
	 */
	
	public static String cutStringByU8Byte(String str, int len) throws IOException {
		
		byte[] buf = str.getBytes("utf-8");
		
		int count = 0;
		for(int x=len-1; x>=0; x--){
			if(buf[x]<0)
				count++;
			else
				break;
		}
		
		if(count%3==0)
			return new String(buf,0,len,"utf-8");
		else if(count%3==1)
			return new String(buf,0,len-1,"utf-8");
		else 
			return new String(buf,0,len-2,"utf-8");
		
	}

	public static String cutStringByByte(String str,int len) throws IOException{
		
		byte[] buf = str.getBytes("gbk");
		
		int count = 0;
		for(int x=len-1; x>=0; x--){
			if(buf[x]<0)
				count++;
			else
				break;
		}
		
		if(count%2==0)
			return new String(buf,0,len,"gbk");
		else
			return new String(buf,0,len-1,"gbk");
	}
}



------- android培训 java培训、期待与您交流!-------


详细请查看:http://edu.csdn.net/heima -------
分享到:
评论

相关推荐

    如何处理错误ORA-29275:部分多字节字符

    ### 如何处理错误ORA-29275:部分多字节字符 #### 问题背景与描述 在Oracle数据库操作过程中,用户可能会遇到一个特定的错误提示——ORA-29275:部分多字节字符。这一错误通常出现在执行查询`SELECT * FROM V$...

    C# 按照字节长度截取字符串

    在C#编程中,有时我们需要根据字节长度来截取字符串,这可能是因为要处理不同编码格式的数据,或者为了适应特定的传输限制。本篇将详细介绍如何在C#中按照字节长度截取字符串,并结合正则表达式进行操作。 首先,...

    asp.net c# String类添加按字节截取字符串的扩展方法

    在ASP.NET C#开发环境中,处理字符串是一项常见且重要的任务,尤其是在需要对字符串进行精确控制的情况下,如按字节截取字符串。本文将详细介绍如何为C#中的`String`类添加一个扩展方法,该方法允许我们按照字节而非...

    Go语言按字节截取字符串的方法

    本文实例讲述了Go语言按字节截取字符串的方法。分享给大家供大家参考。具体实现方法如下: 代码如下:// 按字节截取字符串 utf-8不乱码 func SubstrByByte(str string, length int) string {  bs := []byte(str)[:...

    字符串截取(按字节)

    ### 字符串截取按字节:深入解析与实践 在计算机编程中,字符串处理是一项基本而关键的任务,尤其在处理非英文字符时,如何精确地按照字节进行字符串截取变得尤为重要。本文将深入探讨一种按字节截取字符串的方法,...

    JAVA如何按字节截取字符串

    由于计算机内部存储和处理的都是二进制数据,对于非英文字符,在不同的编码(如UTF-8、GBK)下占用的字节数是不同的,因此直接按字符截取往往不能满足需求。本文旨在介绍如何利用Java语言按照字节截取字符串,并给出...

    关于java按字节截取带有汉字的字符串的解法

    在上述代码中,我们首先将字符串转换为UTF-8编码的字节数组,然后截取所需的字节数量,最后再将截取的字节数组转换回字符串。这种方法可以确保即使在处理汉字时也能正确截取字符串。 需要注意的是,不同编码方式...

    按byte截取字符串

    总结来说,“按byte截取字符串”是一项实用的技术,涉及到字符串编码、字节数组操作以及对Java语言特性的深入理解。在实际开发中,掌握这项技能对于处理与字节流相关的任务至关重要,尤其是在处理网络数据传输、文件...

    字符串按照指定的字节数来截取

    字符串是由字符组成的序列,而“字符串按照指定的字节数来截取”这个话题,就是指如何在字符串中提取固定字节数的部分。在不同的编程语言中,都有相应的函数或方法来实现这一功能。 在Python中,可以使用内置的`...

    实现一个按字节来截取字符串的方法,功能类似于string类的substring方法,

    实现一个按字节来截取字符串的方法,功能类似于string类的substring方法,String类是按字符截取 的,例如"中国abc".substring(1,3),将返回“国a”。这里 要求按字节截取,一个英文字符当一个字节,一个中文字符当两...

    根据字节数截取字符串

    总结来说,根据字节数截取字符串涉及到的关键技术包括字符串与字节数组的转换、字符编码的理解以及字符边界定位。`SplitString.java`文件很可能是实现这个功能的一个具体实例,通过阅读和理解这段代码,开发者可以更...

    TIA博途-字符转换为字符串以及截取字符串有效字符的具体方法示例.docx

    在处理通信数据时,我们经常需要对字符和字符串进行操作,例如将字符转换为字符串,或者从字符串中截取有效字符。以下将详细介绍在TIA博途中如何实现这些操作。 首先,字符转换为字符串的过程通常涉及到ASCII码。...

    Northwind数据库数据字典.pdf

    - PostalCode:邮政编码,可变长度的字符串,20个字符,不允许空。 - Country:国家,可变长度的字符串,30个字符,不允许空。 - Phone:电话,可变长度的字符串,48个字符,不允许空。 - Fax:传真,可变长度的...

    按字节长度截取字符串(支持截取带HTML代码样式的字符串)

    在IT行业中,处理字符串是常见...总的来说,按字节长度截取带有HTML代码的字符串是一个需要细心处理的问题,需要考虑到编码、HTML结构和潜在的不完整标签。通过自定义函数或使用第三方库,我们可以有效地解决这个问题。

    JAVA按字节截取字符串(适用于Unicode)

    7. 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉...

    Patchwork UTF-8:处理UTF-8格式字符串的便携类库.zip

    4. **字符串操作**:包括查找、替换、截取等基本字符串操作,这些操作都考虑到UTF-8的特性,确保不会破坏多字节字符。 5. **错误处理**:在进行操作时,该库会提供详细的错误报告,帮助开发者追踪和修复编码问题。 ...

    JAVA 按照字节截取字符串

    一般截取字符串是按照字符截取的,现在这个代码是按照字节截取字符

    java编写一个截取字符串的函数,输入为一个字符串和字节数.docx

    Java 字符串截取函数 ...本例中,我们实现了一个 Java 字符串截取函数,该函数可以截取指定字节的字符串,并保证汉字不被截半个。该函数使用 `substring` 方法来实现字符串截取,并且可以应用于各种字符串处理场景。

    C#字符串截取

    根据给定的文件信息,我们可以总结出以下关于C#中的字符串截取的相关知识点: ### C#字符串截取方法概述 在C#编程语言中,字符串处理是非常常见的需求之一,尤其是在Web开发、桌面应用开发以及数据处理等领域。...

Global site tag (gtag.js) - Google Analytics