`
dyccsxg
  • 浏览: 204751 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类

native2ascii的 java实现

    博客分类:
  • Java
阅读更多

描述:简单模拟JDK自带的 native2ascii.exe 的功能

package org.demo.util;

import java.io.IOException;

/**
 * 字符转换
 * @author  
 * @date    2010-9-13
 * @file    org.demo.util.Ascii2Native.java
 */
public class Native2Ascii {
	private static final String PREFIX = "\\u"; 
	/**
	 * @param args
	 */
	public static void main(String[] args)throws IOException {		
		String str = "Welcome!我的朋友.";
		String ascii = native2ascii(str);
		System.out.println("ascii->\n" + ascii);
		// 
		String data = ascii2native(ascii);
		System.out.println("native->\n" + data);
	}
	/**
	 * native2ascii
	 * @param text
	 * @return
	 */
	public static String native2ascii(String text){
		StringBuilder sb = new StringBuilder();
		for (int i=0; i<text.length(); i++){
			char ch = text.charAt(i);
			String ascii = char2ascii(ch);
			sb.append(ascii);
		}
		return sb.toString();
	}
	/**
	 * char -> ascii
	 * @param ch
	 * @return
	 */
	private static String char2ascii(char ch) {
		if (ch < 256){
			return Character.toString(ch);
		}
		String hex = Integer.toHexString(ch);
		if (hex.length() < 4){
			hex = "0" + hex;
		}
		return PREFIX + hex;
	}
	/**
	 * native2ascii
	 * @param ascii
	 * @return
	 */
	public static String ascii2native(String text){
		StringBuilder sb = new StringBuilder();
		int start = 0;
		int idx = text.indexOf(PREFIX);
		while (idx != -1){
			// 上一个 Unicode 码与当前 Unicode 码之间的有效字符
			// eg: \u0101ABC\u0102 之间的ABC
			sb.append(text.substring(start, idx));
			// 转换当前 Unicode 码
			String ascii = text.substring(idx + 2,idx + 6);
			char ch = (char)Integer.parseInt(ascii,16);
			sb.append(ch);
			// 查找下一个 Unicode
			start = idx + 6;
			idx = text.indexOf(PREFIX,start);
		}
		// 结尾的有效字符
		sb.append(text.substring(start));
		return sb.toString();
	} 
}

 输出结果:

ascii->
Welcome!\u6211\u7684\u670b\u53cb.
native->
Welcome!我的朋友.

 

分享到:
评论
1 楼 貌似掉线 2015-12-07  
已用上。多谢!

相关推荐

    mytest native2ascii java

    mytest native2ascii javamytest native2ascii javamytest native2ascii java

    native2ascii简介

    `native2ascii` 是Sun Java SDK中的一个实用工具,主要用于将包含非ASCII字符的文本文件(如`.txt`、`.ini`、`.properties`、`.java`等)转换为Unicode编码格式。在软件开发过程中,特别是在处理国际化(i18n)需求...

    native2ascii.exe

    标题中的"native2ascii.exe"是一款Java开发工具,主要用于处理非ASCII编码的本地化资源文件。这个工具将本地化的文本,比如包含特殊字符或者非英文字符的字符串,转换成ASCII编码,以便Java程序能够正确读取和处理。...

    native2ascii图形工具

    描述中的“基于JDK的native2ascii的编码转换图形工具”可能就是这样的一种实现,它可能是将`native2ascii`的命令行操作集成到一个图形用户界面(GUI)程序中,使得非技术用户也能轻松进行编码转换。 使用`native2...

    native2ascii 命令的使用

    `native2ascii`命令是Java开发中用于处理非ASCII字符的一种工具,主要用于将含有非英文字符(如中文、日文等)的文本文件转换为Unicode编码的ASCII格式,以便Java虚拟机(JVM)能够正确识别和处理。这个命令对于国际...

    Native2Ascii(Ascii2Native)

    Native2Ascii(Ascii2Native) Native2Ascii(Ascii2Native)

    native2ascii图形界面工具

    8. **native2ascii.jar**:原生的`native2ascii`工具的Java实现,通常位于Java SDK的bin目录下,主要用于命令行操作。 总的来说,这个压缩包提供了一个基于SWT的图形化版本的`native2ascii`工具,以及其运行所需的...

    在线native2ascii。方便很多

    在Java开发中,native2ascii工具是用于处理非ASCII字符的,特别是处理包含特殊字符(如中文、日文等)的资源文件时,需要将其转换为ASCII编码以便Java虚拟机可以正确读取。这个在线版本的工具使得开发者无需在本地...

    native2ascii

    标题中的"native2ascii"是Java开发中一个重要的工具,主要用于处理非ASCII字符,尤其是在处理配置文件如`.properties`时。在Java系统中,`.properties`文件通常用于存储配置信息,但它们默认只支持ASCII字符集。当...

    native2ascii.exe java的转码工具

    《深入理解Java转码工具:native2ascii.exe》 在Java开发过程中,有时我们需要处理包含非ASCII字符的文本文件,例如包含中文、日文或其他语言的字符串。这时,Java的`native2ascii.exe`工具就显得尤为重要。它是一...

    Native2Ascii

    把文字编码变成统一的Unicode编码工具 Native Ascii 编码 本地 Java

    native2ascii(图形界面)

    用java写的中文字符转unicode码程序,功能类似于JDK里面的native2ascii,但是是图形界面,非常好用。

    仿native2ascii.exe

    偶没有装JDK,所以也无法使用JDK自带的实用工具native2ascii.exe,这是一个仿制工具,仅供JAVA加载资源文件时将汉字转换为UNICODE编码用;

    Native2Ascii互转换工具

    用C#编写的Native和Ascii转换工具,这只是用几分钟写的初版. "设置"按钮还没有想好添加什么功能. 目前程序是置顶的,窗体大小可以改变. 现在只有文本框内容转换,后续会添加文件转换和批量文件转换. 有什么建议可以写在...

Global site tag (gtag.js) - Google Analytics