`
wuzijingaip
  • 浏览: 319720 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

java 乱码最终解决

阅读更多
如果只是为了页面的显示,用GBK 在页面显示,ISO-8859-1 存在数据库就够了,但如果想最终解决它,要用Unicode才行,本人的一个项目由于要用java ,c++,linux,简体,繁体,英文 协作才能完成,但只是在页面显示正确是不能很好的协同工作,只有用unicode 才能根本解决

java 代码如下:

package com.c.elmer.util.string;

public class PropertiesTranslater {

	public static void main(String[] args) {
		System.out.println("g2u:"+new PropertiesTranslater().GBK2Unicode("简繁 测试"));
		System.out.println("u2g:"+new PropertiesTranslater().Unicode2GBK("\\u4e2d\\u570basdf\\u4eba\\u5730\\u53d1,\\u4e8e\\u593a\\u7395\\u5730"));

	}

	/**
	 * 中文转unicode
	 * @param str
	 * 
	 * @return 反回unicode编码
	 */

	public static String GBK2Unicode(String str) {
		StringBuffer result = new StringBuffer();
		for (int i = 0; i < str.length(); i++) {
			char chr1 = (char) str.charAt(i);
			if (!PropertiesTranslater.isNeedConvert(chr1)) {
				result.append(chr1);
				continue;

			}
			result.append("\\u" + Integer.toHexString((int) chr1));
		}

		return result.toString();

	}

	/**
	 * 
	 * unicode转中文
	 * @param str
	 * 
	 * @return 中文
	 * 
	 */

	public static String Unicode2GBK(String dataStr) {

		int index = 0;

		StringBuffer buffer = new StringBuffer();
		while (index < dataStr.length()) {

			if (!"\\u".equals(dataStr.substring(index, index + 2))) {
				buffer.append(dataStr.charAt(index));
				index++;
				continue;
			}
			String charStr = "";

			charStr = dataStr.substring(index + 2, index + 6);

			char letter = (char) Integer.parseInt(charStr, 16);

			buffer.append(letter);

			index += 6;
		}
		return buffer.toString();

	}

	public static boolean isNeedConvert(char para) {
		return ((para & (0x00FF)) != para);

	}

}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics