java输出全部unicode字符

 我来答
一江漂流
推荐于2016-11-14 · TA获得超过193个赞
知道小有建树答主
回答量:106
采纳率:0%
帮助的人:96.5万
展开全部

  Java显示所有的Unicode 字符,代码主要是使用Java.awt.Graphics
的drawChars()方法,来绘出Unicode 字符。在设计符合国际化的程序过程当中,仅仅能够显示本地字符是不够的,只用Unicode
字符集才能够满足同时显示多国语言字符的需要。本实例实现了如何显示Unicode 字符的方法。


  Java显示所有Unicode 字符编写方法:


  1.编写UnicodeDisplay 类,该类继承了Jframe 类,实现了ActionListener
接口,该类是为了显示一个图形化的界面而实现的一个显示框架类,该类负责初始化显示窗口以及负责与用户交互,按照用户指定的字体以及风格改变
Unicode 的显示,代码如下:

// 导入所需要的Java 类库
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class UnicodeDisplay extends JFrame implements ActionListener {
int page = 0;
UnicodePanel p;
JScrollBar b;
String fontfamily = "Serif";
int fontstyle = Font.PLAIN;
/*构造函数,创建frame、菜单和滚动条*/
public UnicodeDisplay(String name) {
super(name);
p = new UnicodePanel(); // 创建panel
p.setBase((char)(page * 0x100)); // 初始化panel
getContentPane().add(p, "Center"); // 使其居中
// Create and set up a scrollbar, and put it on the right
b = new JScrollBar(Scrollbar.VERTICAL, 0, 1, 0, 0xFF);
b.setUnitIncrement(1);
b.setBlockIncrement(0x10);
b.addAdjustmentListener(new AdjustmentListener() {
public void adjustmentValueChanged(AdjustmentEvent e) {
page = e.getValue();
p.setBase((char)(page * 0x100));
}
});
getContentPane().add(b, "East");
// 设置消息响应函数处理关闭窗口请求
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) { System.exit(0); }
});
// 响应PageUP、PageDown、Up 和Down 按键
this.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
int code = e.getKeyCode();
int oldpage = page;
if ((code == KeyEvent.VK_PAGE_UP) ||
(code == KeyEvent.VK_UP)) {
if (e.isShiftDown()) page -= 0x10;
else page -= 1;
if (page < 0) page = 0;
}
else if ((code == KeyEvent.VK_PAGE_DOWN) ||
(code == KeyEvent.VK_DOWN)) {
if (e.isShiftDown()) page += 0x10;
else page += 1;
if (page > 0xff) page = 0xff;
}
if (page != oldpage) { //如果改变了当前显示页
p.setBase((char) (page * 0x100)); // 更新显示
b.setValue(page); // 更新滚动条
}
}
});
// 建立可以改变显示字体的菜单.
JMenuBar menubar = new JMenuBar();
this.setJMenuBar(menubar);
menubar.add(makemenu("Font Family",
new String[] {"Serif", "SansSerif", "Monospaced"},
this));
menubar.add(makemenu("Font Style",
new String[]{
"Plain","Italic","Bold","BoldItalic"
}, this));
}

  2.ActionPerformed()方法用于处理子菜单当中的各个选项:

public void actionPerformed(ActionEvent e) {
String cmd = e.getActionCommand();
if (cmd.equals("Serif")) fontfamily = "Serif";
else if (cmd.equals("SansSerif")) fontfamily = "SansSerif";
else if (cmd.equals("Monospaced")) fontfamily = "Monospaced";
else if (cmd.equals("Plain")) fontstyle = Font.PLAIN;
else if (cmd.equals("Italic")) fontstyle = Font.ITALIC;
else if (cmd.equals("Bold")) fontstyle = Font.BOLD;
else if (cmd.equals("BoldItalic")) fontstyle = Font.BOLD + Font.ITALIC;
p.setFont(fontfamily, fontstyle);
}

  3.Makemenu()方法用于从数组当中创建菜单,代码如下:

private Jmenu makemenu(String name, String[] itemnames,
ActionListener listener)
{
Jmenu m = new Jmenu(name);
for(int I = 0; I < itemnames.length; I++) {
JmenuItem item = new JmenuItem(itemnames[I]);
item.addActionListener(listener);
item.setActionCommand(itemnames[I]);
m.add(item);
}
return m;
}

  4.编写UnicodePanel 类,该类继承了Jcomponent,创建负责显示Unicode 的类UnicodePanel,它负责绘出一页(共有16×16=256 个)的Unicode 字符:

public static class UnicodePanel extends JComponent {
protected char base; // 指定我们显示的初始值
protected Font font = new Font("serif", Font.PLAIN, 18); // 指定缺省的显示字体
protected Font headingfont = new Font("monospaced", Font.BOLD, 18); // 指定缺省表头字体
static final int lineheight = 25; // 指定显示一行高度
static final int charspacing = 20; // 指定显示一个Unicode 字符宽度
static final int x0 = 65;
static final int y0 = 40;
/** 指定开始显示的初始字符并且刷新Panel */
public void setBase(char base) {
this.base = base;
repaint();
}
/**设定显示所用的新字体或者风格并且刷新Panel */
public void setFont(String family, int style) {
this.font = new Font(family, style, 18);
repaint();
}
/** 绘出字符表的一页 */
public void paintComponent(Graphics g) {
int start = (int)base & 0xFFF0; // 设置起始显示字符
// 使用给定字体显示表头
g.setFont(headingfont);
// 在顶端绘出0..F
for(int i=0; i < 16; i++) {
String s = Integer.toString(i, 16);
g.drawString(s, x0 + i*charspacing, y0-20);
}
// 绘出左边表头.
for(int i = 0; i < 16; i++) {
int j = start + i*16;
String s = Integer.toString(j, 16);
g.drawString(s, 10, y0+i*lineheight);
}
// 绘出Unicode 字符
g.setFont(font);
char[] c = new char[1];
for(int i = 0; i < 16; i++) {
for(int j = 0; j < 16; j++) {
c[0] = (char)(start + j*16 + i);
g.drawChars(c, 0, 1, x0 + i*charspacing, y0+j*lineheight);
}
}
}
/** 返回给定的分辨率 */
public Dimension getPreferredSize() {
return new Dimension(x0 + 16*charspacing,
y0 + 16*lineheight);
}
}
}
进击的火猫
2014-03-14 · 超过44用户采纳过TA的回答
知道小有建树答主
回答量:76
采纳率:0%
帮助的人:101万
展开全部

public class Test3 {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  char c = 0;
  for (; c < 65536; c++) {
   System.out.print(c);
  }
 }

}

 
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
grace23450
2015-08-16 · TA获得超过1.3万个赞
知道大有可为答主
回答量:7081
采纳率:77%
帮助的人:2336万
展开全部
String str = "\u4e2d\u534e\u4eba\u6c11\u5171\u548c\u56fd";
System.out.println(UnicodeToString(str));

把unicode字符还原的方法:
public static String UnicodeToString(String str) {
Pattern pattern = Pattern.compile("(\\\\u(\\p{XDigit}{4 }))");
Matcher matcher = pattern.matcher(str);
char ch;
while (matcher.find()) {
ch = (char) Integer.parseInt(matcher.group(2), 16);
str = str.replace(matcher.group(1), ch + "");
}
return str;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
云梦之竹h
推荐于2018-03-14 · TA获得超过266个赞
知道小有建树答主
回答量:224
采纳率:0%
帮助的人:98.5万
展开全部
for(char c=Character.MIN_VALUE;c<=Character.MAX_VALUE;c++){
System.out.print(c+"\t");
if(c%10==0) System.out.println();
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友834a0a1e3
2015-08-25 · TA获得超过835个赞
知道小有建树答主
回答量:1031
采纳率:62%
帮助的人:164万
展开全部
java的默认字符编码就是unicode的,如果想使用其他编码格式,请参考API文档编码部分!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式