- 浏览: 149127 次
- 性别:
- 来自: 南昌
文章分类
- 全部博客 (123)
- Hibernate (10)
- Struts2 (6)
- Spring (5)
- Maven (11)
- Eclipse (5)
- Mysql (14)
- Html (3)
- IIS (4)
- Svn (2)
- Jquery (3)
- Apahce (1)
- Jsp (4)
- 其它 (10)
- ssh2 (2)
- java (14)
- js (8)
- Flex (4)
- barcode4j (1)
- powerdesiger (1)
- ibaits (2)
- googlemap (1)
- 淘宝客 (1)
- linux (7)
- idea (1)
- Query全屏滚动插件FullPage.js中文帮助文档API (1)
- 编写 (0)
最新评论
-
a276664990:
这玩意怎么使用?
googleMap.js -
xm_koma:
有没有将JFreeChart生成的图表导出到Excel中的例子 ...
在Web上用iText和JFreeChart将图形报表导出到PDF -
chong2230:
多谢 借用了
js复制当前链接 -
mikkjl:
非常感谢 按照你的做法 成功解决了问题 呵呵
struts2配置多个配置文件 -
yadsun:
推荐你用ActivePort,一个小工具300k不到,最重要的 ...
端口查看
Unicode字 符在某个平台上不存在,将会输出一个'?'。
GB2312编码中一个汉字是16位的,而UTF8中一个汉字却是24位的。
如果发出页面采用了UTF-8的编码,怎样实现转换到gb2312?
private String utf8Togb2312(String str){
StringBuffer sb = new StringBuffer();
for(int i=0; i<str.length(); i++) {
char c = str.charAt(i);
switch (c) {
case '+':
sb.append(' ');
break;
case '%':
try {
sb.append((char)Integer.parseInt(
str.substring(i+1,i+3),16));
}
catch (NumberFormatException e) {
throw new IllegalArgumentException();
}
i += 2;
break;
default:
sb.append(c);
break;
}
}
// Undo conversion to external encoding
String result = sb.toString();
String res=null;
try{
byte[] inputBytes = result.getBytes("8859_1");
res= new String(inputBytes,"UTF-8");
}
catch(Exception e){}
return res;
}
UTF8转换成GB2312 当我们在基于HTTP协议的JSP或Servlet的应用中获取数据或发送请求时,JVM会把输送的数据编码成UTF8格式。如果我们直接从HTTP流中 提取中文数据,提取的结果为“????”(可能更多问号),为转换成我们能够理解的中文字符,我们需要把UTF8转换成GB2312,借助ISO- 8859-1标准编码能够轻易的实现,下面的代码实现了这一功能:
byte [] b;
String utf8_value;
utf8_value = request.getParameter("NAME");//从HTTP流中取"NAME"的UTF8数据
b = utf8_value.getBytes("8859_1"); //中间用ISO-8859-1过渡
String name = new String(b, "GB2312"); //转换成GB2312字符
这是我做的一个项目程序的一段:
byte[] b;
String gbk_value;
gbk_value=request.getParameter("address");//从HTTP流中取"name"的GBK数据(由于web.xml中过滤器设置默认编码为GBK,所以外网从UTF-8变为GBK)
b=gbk_value.getBytes("GBK");//中间用GBK过渡,从GBK转换成GBK数组
String address=new String(b,"utf-8");//转换成utf-8字符
myform.setAddress(address);
在知道流长度的情况下将输入流转换成字节数组 Java中的输入流抽象类InputStream有int read(byte[] b, int off, int len)方法,参数中byte[] b是用来存放从InputStream中读取的数据,int off指定数组b的偏移地址,也就是数组b的起始下标,int len指定需要读取的长度,方法返回实际读取的字节数。
刚学Java 的朋友可能要说:先定义一个与流长度等长的字节数组,调用read方法,指定起始下标为0,指定读取长度与数组长度等长,不是一下子可以读出来了吗?说的 没错,笔者曾经也试着这样读取数据,但后来发现在读取网络数据时很不安全,我们想想在网络上获取数据可能并没那么流畅,数据流的传送可能会断断续续,所以 并不能保证一次就能读取全部数据,特别是在读取大容量数据时更是如此,所以我们必须在读取数据时检测实际读到的长度,如果没有读完已知长度的数据就应该再 次读取,以此循环检测,直到实际读取的长度累加与已知的长度相等,下面的代码实现了这一功能:
UTF8到GBK的相互转换
<%
String str="你好莱坞";
out.print(enCode(str));
out.print("<br/>"+deCode(enCode(str)));
%>
<%!
String enCode(String str)
{
if(str==null)return "";
String hs="";
try
{
byte b[]=str.getBytes("UTF-16");
//System.out.println(byte2hex(b));
for (int n=0;n<b.length;n++)
{
str=(java.lang.Integer.toHexString(b[n] & 0XFF));
if (str.length()==1)
hs=hs+"0"+str;
else
hs=hs+str;
if (n!=b.length-1)hs=hs+"";
}
str= hs.toUpperCase().substring(4);
//System.out.println(str);
char[] chs=str.toCharArray();
str="";
for(int i=0;i<chs.length;i=i+4)
{
str+="&#x"+chs[i]+chs[i+1]+chs[i+2]+chs[i+3]+";";
}
}
catch(Exception e)
{
System.out.print(e.getMessage());
}
return str;
}
String deCode(String str)
{
if (str == null)
{
return "";
}
String temp = "";
String return_temp = "";
try
{
int str_len = str.length() / 7;
for (int i = 1; i <= str_len; i++)
{
temp += str.substring(3 * i + 5 * (i - 1), 7 * i + (i - 1));
}
temp = "FEFF" + temp;
temp = temp.toLowerCase();
int temp_len = temp.length() / 2;
byte mm[] = new byte[temp_len];
String ss[] = new String[temp_len];
for (int i = 0; i < temp_len; i++)
{
String qq = temp.substring(i * 2, i * 2 + 1);
if (!qq.equals("0"))
{
ss[i] = temp.substring(i * 2, i * 2 + 2);
}
else
{
ss[i] = temp.substring(i * 2 + 1, i * 2 + 2);
}
mm[i] = (byte) Integer.parseInt(ss[i], 16);
System.out.println(mm[i]);
}
return_temp = new String(mm, "UTF-16");
}
catch (Exception e)
{
System.out.print(e.getMessage());
}
return return_temp;
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/yown/archive/2007/05/15/1610010.aspx
GB2312编码中一个汉字是16位的,而UTF8中一个汉字却是24位的。
如果发出页面采用了UTF-8的编码,怎样实现转换到gb2312?
private String utf8Togb2312(String str){
StringBuffer sb = new StringBuffer();
for(int i=0; i<str.length(); i++) {
char c = str.charAt(i);
switch (c) {
case '+':
sb.append(' ');
break;
case '%':
try {
sb.append((char)Integer.parseInt(
str.substring(i+1,i+3),16));
}
catch (NumberFormatException e) {
throw new IllegalArgumentException();
}
i += 2;
break;
default:
sb.append(c);
break;
}
}
// Undo conversion to external encoding
String result = sb.toString();
String res=null;
try{
byte[] inputBytes = result.getBytes("8859_1");
res= new String(inputBytes,"UTF-8");
}
catch(Exception e){}
return res;
}
UTF8转换成GB2312 当我们在基于HTTP协议的JSP或Servlet的应用中获取数据或发送请求时,JVM会把输送的数据编码成UTF8格式。如果我们直接从HTTP流中 提取中文数据,提取的结果为“????”(可能更多问号),为转换成我们能够理解的中文字符,我们需要把UTF8转换成GB2312,借助ISO- 8859-1标准编码能够轻易的实现,下面的代码实现了这一功能:
byte [] b;
String utf8_value;
utf8_value = request.getParameter("NAME");//从HTTP流中取"NAME"的UTF8数据
b = utf8_value.getBytes("8859_1"); //中间用ISO-8859-1过渡
String name = new String(b, "GB2312"); //转换成GB2312字符
这是我做的一个项目程序的一段:
byte[] b;
String gbk_value;
gbk_value=request.getParameter("address");//从HTTP流中取"name"的GBK数据(由于web.xml中过滤器设置默认编码为GBK,所以外网从UTF-8变为GBK)
b=gbk_value.getBytes("GBK");//中间用GBK过渡,从GBK转换成GBK数组
String address=new String(b,"utf-8");//转换成utf-8字符
myform.setAddress(address);
在知道流长度的情况下将输入流转换成字节数组 Java中的输入流抽象类InputStream有int read(byte[] b, int off, int len)方法,参数中byte[] b是用来存放从InputStream中读取的数据,int off指定数组b的偏移地址,也就是数组b的起始下标,int len指定需要读取的长度,方法返回实际读取的字节数。
刚学Java 的朋友可能要说:先定义一个与流长度等长的字节数组,调用read方法,指定起始下标为0,指定读取长度与数组长度等长,不是一下子可以读出来了吗?说的 没错,笔者曾经也试着这样读取数据,但后来发现在读取网络数据时很不安全,我们想想在网络上获取数据可能并没那么流畅,数据流的传送可能会断断续续,所以 并不能保证一次就能读取全部数据,特别是在读取大容量数据时更是如此,所以我们必须在读取数据时检测实际读到的长度,如果没有读完已知长度的数据就应该再 次读取,以此循环检测,直到实际读取的长度累加与已知的长度相等,下面的代码实现了这一功能:
UTF8到GBK的相互转换
<%
String str="你好莱坞";
out.print(enCode(str));
out.print("<br/>"+deCode(enCode(str)));
%>
<%!
String enCode(String str)
{
if(str==null)return "";
String hs="";
try
{
byte b[]=str.getBytes("UTF-16");
//System.out.println(byte2hex(b));
for (int n=0;n<b.length;n++)
{
str=(java.lang.Integer.toHexString(b[n] & 0XFF));
if (str.length()==1)
hs=hs+"0"+str;
else
hs=hs+str;
if (n!=b.length-1)hs=hs+"";
}
str= hs.toUpperCase().substring(4);
//System.out.println(str);
char[] chs=str.toCharArray();
str="";
for(int i=0;i<chs.length;i=i+4)
{
str+="&#x"+chs[i]+chs[i+1]+chs[i+2]+chs[i+3]+";";
}
}
catch(Exception e)
{
System.out.print(e.getMessage());
}
return str;
}
String deCode(String str)
{
if (str == null)
{
return "";
}
String temp = "";
String return_temp = "";
try
{
int str_len = str.length() / 7;
for (int i = 1; i <= str_len; i++)
{
temp += str.substring(3 * i + 5 * (i - 1), 7 * i + (i - 1));
}
temp = "FEFF" + temp;
temp = temp.toLowerCase();
int temp_len = temp.length() / 2;
byte mm[] = new byte[temp_len];
String ss[] = new String[temp_len];
for (int i = 0; i < temp_len; i++)
{
String qq = temp.substring(i * 2, i * 2 + 1);
if (!qq.equals("0"))
{
ss[i] = temp.substring(i * 2, i * 2 + 2);
}
else
{
ss[i] = temp.substring(i * 2 + 1, i * 2 + 2);
}
mm[i] = (byte) Integer.parseInt(ss[i], 16);
System.out.println(mm[i]);
}
return_temp = new String(mm, "UTF-16");
}
catch (Exception e)
{
System.out.print(e.getMessage());
}
return return_temp;
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/yown/archive/2007/05/15/1610010.aspx
发表评论
-
linux安装jdk
2012-11-16 09:43 771第一步:查看Linux自带的JDK是否已安装 (卸载centO ... -
build.xml
2011-04-07 17:56 901<?xml version="1.0" ... -
j2ee书籍
2010-08-12 08:50 732J2EE核心模式.pdf http://www.itstud ... -
jstl为空
2010-08-11 09:51 1310JSTL与EL表达式(为空判断) 一、循环遍历集合 1、在j ... -
在Web上用iText和JFreeChart将图形报表导出到PDF
2010-07-28 22:43 2608最近项目中需要一个将生成的图形报表导出到PDF文件的功能。在图 ... -
java 操作excel
2010-07-28 10:12 774//filePathNew为一个File对象的实例 Writ ... -
java工具包截取字符长度
2009-07-14 10:36 922package cn.jxsme.util.tool; /* ... -
java工具2简单加密
2009-07-14 10:35 868package cn.jxsme.util.tool; /* ... -
java工具日期部分
2009-07-14 10:34 771package cn.jxsme.util.tool; im ... -
过滤HTML部分
2009-07-14 10:34 936package cn.jxsme.util.tool; im ... -
生成文件部分
2009-07-14 10:33 664package cn.jxsme.util.tool; im ... -
用户验证部分
2009-07-14 10:33 685package cn.jxsme.util.tool; /* ... -
MD5加密码部分
2009-07-14 10:32 771package cn.jxsme.util.tool; /** ...
相关推荐
阿里巴巴java编码规范 ,Java 并发编程培训(阿里巴巴) 《阿里巴巴Java开发手册》,首次公开阿里官方Java代码规范标准。这套Java统一规范标准将有助于提高行业编码规范化水平,帮助行业人员提高开发质量和效率、大大...
华为JAVA编码规范.pdf 华为JAVA编码规范.pdf是华为公司编写的JAVA编程语言编码规范,旨在提供一个统一的编程风格和代码组织方式,以提高代码的可读性、维护性和可重用性。该规范涵盖了编程语言的基本结构、命名规则...
腾讯 Java 编码规范 腾讯 Java 编码规范是腾讯集团管理标准的一部分,旨在确保公司项目代码的易维护性和编码安全性。该规范涵盖了 Java 编码风格、文件组织、代码风格、注释、命名、声明、异常、习惯等方面。 一、...
Java 编码规范 Java 编码规范是指在 Java 语言中编写代码时需要遵守的一些约定和规则,以确保代码的可读性、可维护性和可扩展性。本文将对 Java 编码规范的主要内容进行详细讲解。 命名风格是 Java 编码规范的重要...
《阿里巴巴 Java 编码指南》是业界广泛采用的编码规范,旨在提高代码质量和开发效率,尤其对于使用 IntelliJ IDEA 的开发者来说,此指南的兼容性更新至 2023.3+ 版本,确保了最新的开发环境支持。这份指南在 2024 年...
Java编码规范是软件开发中非常重要的一个环节,它旨在提高代码质量、可读性、可维护性和团队协作效率。这份文档,"Java编码规范.doc",由东软集团有限公司的商用软件事业部编写,包含了国内大型Java项目和国际知名...
Java编码标准是软件开发中的一项重要规范,它旨在提高代码质量、可读性以及团队间的协作效率。这份PDF文档很可能是Oracle公司或者一些知名的Java社区制定的编程规范,旨在为Java开发者提供一套统一的编码指南。以下...
【标题】:“Java编码总结1”主要涉及到Java编程语言中的编码问题,这在软件开发中是至关重要的。编码问题往往会导致程序出现难以预料的错误,尤其是处理多国语言或者特殊字符时。Java作为广泛使用的跨平台语言,其...
**百度Java编码规范** 在软件开发中,遵循一定的编码规范是非常重要的,它能提高代码的可读性,便于团队协作,降低维护成本。百度作为一家技术驱动的公司,也提出了其内部使用的Java编码规范,旨在确保代码的一致性...
JAVA 编码规范试题 JAVA 编码规范试题是一套涵盖了 JAVA 编程规范的试题,旨在帮助开发者掌握 JAVA 编程的基本规范和best practice。该试题涵盖了 JAVA 编程规范的多个方面,包括变量命名、代码格式、异常处理、...
本文将深入探讨“js解码”和“java编码”这两个主题,并结合标签“源码”和“工具”,讨论如何在实际项目中应用它们。 首先,我们来看JavaScript中的解码。JavaScript是一种在客户端和服务器端都能运行的脚本语言,...
Java 编码规范是开发团队遵循的一套标准,旨在提高代码质量、可读性和可维护性。这份规范涵盖了多个方面,包括文件命名、命名规范、Java 文件样式、代码编写格式以及编程技巧和性能优化等。 1. **前言** - 简介:...
Java编码规范(Java Coding Standard) oiNSFT-BS-OT0105 V3.0 2005-5-11 东软集团有限公司 商用软件事业部 版权所有 中国 沈阳浑南高新技术产业开发区 东软软件园
JAVA编码规范培训
"java编码规范(华为)" Java编码规范是华为公司为Java语言编程提供的规范性文档,旨在提高编程的规范化和专业化。本规范涵盖了Java语言编程的各个方面,包括排版、注释、命名、编码和JTEST规则和建议。 1. 范围 ...
java编码规范,非常详细 每个switch-case语句都有最后一个default以确保处理了全集。switch中,每一条case分支必须使用break语句结束