UNICODE转码成中文

import java.awt.*;
import java.awt.event.*;
import java.io.UnsupportedEncodingException;
import javax.swing.*;


public class UnicodeToChangeText {
public static void main(String[] args) {
new JTextAreaDemo3();
}
}


// 实现接口ActionListener
class JTextAreaDemo3 implements ActionListener {


JFrame jf;
JPanel jpanel;
JButton jb1;
JTextArea jta = null;
JScrollPane jscrollPane;


public JTextAreaDemo3() {


jf = new JFrame("unicode转换器");
Container contentPane = jf.getContentPane();
contentPane.setLayout(new BorderLayout());


jta = new JTextArea(10, 15);
jta.setTabSize(4);
jta.setFont(new Font("标楷体", Font.BOLD, 16));
jta.setLineWrap(true);// 激活自动换行功能
jta.setWrapStyleWord(true);// 激活断行不断字功能
jta.setBackground(Color.pink);


jscrollPane = new JScrollPane(jta);
jpanel = new JPanel();
jpanel.setLayout(new GridLayout(1, 3));


jb1 = new JButton("unicode码转换为中文");
jb1.addActionListener(this);
jpanel.add(jb1);


contentPane.add(jscrollPane, BorderLayout.CENTER);
contentPane.add(jpanel, BorderLayout.SOUTH);

int width = 800;
int height = 600;
jf.setSize(width, height);


int w = (Toolkit.getDefaultToolkit().getScreenSize().width - width) / 2;
int h = (Toolkit.getDefaultToolkit().getScreenSize().height - height) / 2;
jf.setLocation(w, h);


jf.setVisible(true);


jf.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}


// 覆盖接口ActionListener的方法actionPerformed
public void actionPerformed(ActionEvent e) {
if (e.getSource() == jb1) {
jta.setText(decodeUnicode(jta.getText()));
}
}


/**

* unicode 转换成 中文

* @param theString
* @return
*/
private String decodeUnicode(String theString) {
if (null == theString || "".equals(theString)) {
return null;
}
char aChar;
int len = theString.length();
StringBuffer outBuffer = new StringBuffer(len);
for (int x = 0; x < len;) {
aChar = theString.charAt(x++);
if (aChar == '\\') {
aChar = theString.charAt(x++);
if (aChar == 'u') {
int value = 0;
for (int i = 0; i < 4; i++) {
aChar = theString.charAt(x++);
switch (aChar) {
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
value = (value << 4) + aChar - '0';
break;
case 'a':
case 'b':
case 'c':
case 'd':
case 'e':
case 'f':
value = (value << 4) + 10 + aChar - 'a';
break;
case 'A':
case 'B':
case 'C':
case 'D':
case 'E':
case 'F':
value = (value << 4) + 10 + aChar - 'A';
break;
default:
throw new IllegalArgumentException(
"Malformed   \\uxxxx   encoding.");
}
}
outBuffer.append((char) value);
} else {
if (aChar == 't')
aChar = '\t';
else if (aChar == 'r')
aChar = '\r';
else if (aChar == 'n')
aChar = '\n';
else if (aChar == 'f')
aChar = '\f';
outBuffer.append(aChar);
}
} else
outBuffer.append(aChar);
}
return outBuffer.toString();
}


/**
* 字符串编码转换的实现方法

* @param str
*            待转换编码的字符串
* @param newCharset
*            目标编码
* @return
* @throws UnsupportedEncodingException
*/
public String changeCharset(String str, String newCharset) {
if (str != null) {
// 用默认字符编码解码字符串。
byte[] bs = str.getBytes();
// 用新的字符编码生成字符串
try {
return new String(bs, newCharset);
} catch (UnsupportedEncodingException e) {
return null;
}
}
return null;
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值