Java汉字处理
1、字符串长度
String s1 = "我是中国人";
String s2 = "imchinese";
String s3 = "im中国人";
System.out.println(s1+":"+new String(s1).length());
System.out.println(s2+":"+new String(s2).length());
System.out.println(s3+":"+new String(s3).length());
输出结果:
我是中国人:5
imchinese:9
im中国人:5
结论:字符串里如果有双字节的字符java就把每个字符都按双字节编码,如果都是单字节的字符就按单字节编码。
2、提取字符串中的汉字
String str = "af我是kz中h国m人ig";
char ch[] = str.toCharArray();
for (int i = 0; i < ch.length; i++) {
if (ch[i] > 255) {
System.out.print(ch[i]);
}
}
输出结果:
我是中国人
3、打印汉字编码
(1)打印汉字的unicode编码
char ch = '中';
System.out.println(Integer.toHexString(ch));
输出结果:
4e2d
(2)打印汉字的GBK编码
String str = "中";
byte[] bt = str.getBytes("GBK");
System.out.println(Integer.toHexString(bt[0]).substring(6)
+Integer.toHexString(bt[1]).substring(6));
输出结果:
d6d0
说明:java内部使用的是unicode编码,汉字的Unicode编码范围为\u4E00-\u9FA5 或\uF900-\uFA2D,如果不在这个范围内就不是汉字。我们用char定义一个变量,如char ch='中'; 这时,ch是Unicode编码的。GBK编码与unicode编码是不同的两种编码方式,因此它们打印出的值是不一样的。GBK的整体编码范围是为0x8140-0xFEFE,不包括低字节是0x7F的组合。高字节范围是0x81-0xFE,低字节范围是0x40-7E和0x80-0xFE。
4、用两个byte组成一个汉字
byte bb[] = new byte[2];
bb[0] = -42;
bb[1] = -48;
String str = new String(bb);
System.ou
相关文档:
在成功实现Java调用C++之后,接下来想到能否通过JNA实现Java调用Fortran,今天试验了一下,还是比较容易的。
网上有一个Java调用F95的例子,但是我考虑不仅要实现F95的调用,还要实现F77的调用,所以费了一些周折。
问题的关键在于F77为过程名自动添加了一个尾部的下划线,所以sub1这个过程,到Java一端,就变成了sub1_, ......
1.java project环境,使用java.io用相对路径读取文件的例子:
*目录结构:
DecisionTree
|___src
|___com.decisiontree.Sampl ......
前几天,湖南SEO在用jsp写一个企业站程序的时候,因为要参加项目答辩竞选,所以就想为自己写的程序搞几个亮点,因为搞SEO久了,不自觉就会想到伪静态,但是在百度查了一个下午,只查到了urlrewrite架包的下载地方,和架设方面的文章,并没有jsp(JAVA)伪静态的具体操作示范,有的也只是,单页面的伪静态的写法,这里我就重头 ......
一、
问:org.postgresql.util.PSQLException: FATAL: no pg_hba.conf entry for host "192.168.254.103", user "postgres",database "postgres", SSL off
答:PostgreSQ数据库为了安全,它不会监听除本地以外的所有连接请求,当用户通过JDBC访问是,就会报一些以上的异常。要解决这个问题 ......
为了实现自定义的log类,能够输出具体的代码行行号,通过使用StackTraceElement对象实现了。
这里指出需要注意的几个问题:
1. 程序中返回的代码行行号,是新建StackTrackElement对象的那一行。
2. 可以通过传参的方法实现输出特定行行号。具体实现见代码。
1/**
2 *
3 */
4package leo.demo ......