「java后台编码格式转换」java文件编码格式转换

博主:adminadmin 2022-12-26 15:51:10 50

今天给各位分享java后台编码格式转换的知识,其中也会对java文件编码格式转换进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java中接口编码格式不同怎么转换?

先用String s1=new String( s.toString().getBytes("gbk"),"gb2312");

再用String s2=new String( s.toString().getBytes("UTF-8"),"gbk");

如果还是不行就是action的提交方式限制编码方式

java后台怎么解决编码问题

不用实现和继承,自己封装就可以了,想要什么转换自己对应封装方法就可以了,这样自己用起来也方便点。再往上找了个例子,你看看希望能帮到你!public class ChangeCharset {

/** 7位ASCII字符,也叫作ISO646-US、Unicode字符集的基本拉丁块 */

public static final String US_ASCII = "US-ASCII";

/** ISO 拉丁字母表 No.1,也叫作 ISO-LATIN-1 */

public static final String ISO_8859_1 = "ISO-8859-1";

/** 8 位 UCS 转换格式 */

public static final String UTF_8 = "UTF-8";

/** 16 位 UCS 转换格式,Big Endian(最低地址存放高位字节)字节顺序 */

public static final String UTF_16BE = "UTF-16BE";

/** 16 位 UCS 转换格式,Little-endian(最高地址存放低位字节)字节顺序 */

public static final String UTF_16LE = "UTF-16LE";

/** 16 位 UCS 转换格式,字节顺序由可选的字节顺序标记来标识 */

public static final String UTF_16 = "UTF-16";

/** 中文超大字符集 */

public static final String GBK = "GBK";

/**

* 将字符编码转换成US-ASCII码

*/

public String toASCII(String str) throws UnsupportedEncodingException {

return this.changeCharset(str, US_ASCII);

}

/**

* 将字符编码转换成ISO-8859-1码

*/

public String toISO_8859_1(String str) throws UnsupportedEncodingException {

return this.changeCharset(str, ISO_8859_1);

}

/**

* 将字符编码转换成UTF-8码

*/

public String toUTF_8(String str) throws UnsupportedEncodingException {

return this.changeCharset(str, UTF_8);

}

/**

* 将字符编码转换成UTF-16BE码

*/

public String toUTF_16BE(String str) throws UnsupportedEncodingException {

return this.changeCharset(str, UTF_16BE);

}

/**

* 将字符编码转换成UTF-16LE码

*/

public String toUTF_16LE(String str) throws UnsupportedEncodingException {

return this.changeCharset(str, UTF_16LE);

}

/**

* 将字符编码转换成UTF-16码

*/

public String toUTF_16(String str) throws UnsupportedEncodingException {

return this.changeCharset(str, UTF_16);

}

/**

* 将字符编码转换成GBK码

*/

public String toGBK(String str) throws UnsupportedEncodingException {

return this.changeCharset(str, GBK);

}

/**

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

*

* @param str

* 待转换编码的字符串

* @param newCharset

* 目标编码

* @return

* @throws UnsupportedEncodingException

*/

public String changeCharset(String str, String newCharset)

throws UnsupportedEncodingException {

if (str != null) {

// 用默认字符编码解码字符串。

byte[] bs = str.getBytes();

// 用新的字符编码生成字符串

return new String(bs, newCharset);

}

return null;

}

/**

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

*

* @param str

* 待转换编码的字符串

* @param oldCharset

* 原编码

* @param newCharset

* 目标编码

* @return

* @throws UnsupportedEncodingException

*/

public String changeCharset(String str, String oldCharset, String newCharset)

throws UnsupportedEncodingException {

if (str != null) {

// 用旧的字符编码解码字符串。解码可能会出现异常。

byte[] bs = str.getBytes(oldCharset);

// 用新的字符编码生成字符串

return new String(bs, newCharset);

}

return null;

}

public static void main(String[] args) throws UnsupportedEncodingException {

ChangeCharset test = new ChangeCharset();

String str = "This is a 中文的 String!";

System.out.println("str: " + str);

String gbk = test.toGBK(str);

System.out.println("转换成GBK码: " + gbk);

System.out.println();

String ascii = test.toASCII(str);

System.out.println("转换成US-ASCII码: " + ascii);

gbk = test.changeCharset(ascii, ChangeCharset.US_ASCII,

ChangeCharset.GBK);

System.out.println("再把ASCII码的字符串转换成GBK码: " + gbk);

System.out.println();

String iso88591 = test.toISO_8859_1(str);

System.out.println("转换成ISO-8859-1码: " + iso88591);

gbk = test.changeCharset(iso88591, ChangeCharset.ISO_8859_1,

ChangeCharset.GBK);

System.out.println("再把ISO-8859-1码的字符串转换成GBK码: " + gbk);

System.out.println();

String utf8 = test.toUTF_8(str);

System.out.println("转换成UTF-8码: " + utf8);

gbk = test.changeCharset(utf8, ChangeCharset.UTF_8, ChangeCharset.GBK);

System.out.println("再把UTF-8码的字符串转换成GBK码: " + gbk);

System.out.println();

String utf16be = test.toUTF_16BE(str);

System.out.println("转换成UTF-16BE码:" + utf16be);

gbk = test.changeCharset(utf16be, ChangeCharset.UTF_16BE,

ChangeCharset.GBK);

System.out.println("再把UTF-16BE码的字符串转换成GBK码: " + gbk);

System.out.println();

String utf16le = test.toUTF_16LE(str);

System.out.println("转换成UTF-16LE码:" + utf16le);

gbk = test.changeCharset(utf16le, ChangeCharset.UTF_16LE,

ChangeCharset.GBK);

System.out.println("再把UTF-16LE码的字符串转换成GBK码: " + gbk);

System.out.println();

String utf16 = test.toUTF_16(str);

System.out.println("转换成UTF-16码:" + utf16);

gbk = test.changeCharset(utf16, ChangeCharset.UTF_16LE,

ChangeCharset.GBK);

System.out.println("再把UTF-16码的字符串转换成GBK码: " + gbk);

String s = new String("中文".getBytes("UTF-8"), "UTF-8");

System.out.println(s);

}

}

java中从服务器返回的是native2ascii码 如何转换为UTF-8?

猪哥解答:

1、首先确定你的java编码是UTF-8还是其他,如果用Eclipse编程,进入java程序,用快捷键ALT+Enter查看当前程式编码,如图。

2、确认完编码之后,如果是后台显示,直接输出就可以,例如:

String str = "\u540c\u5fd7\u5011";

System.out.println(str);

后来输出为“同志们”。

3、如果是jsp显示,在jsp中设置charset:

%@ page contentType="text/html; charset=UTF-8"%

然后直接%=str%也是可以的。

Java 修改编码格式的几种方式

主要分response的字节字符输出流和request接受中文参数doGet(),doPost()的设置四种.以及从服务器下载文件到浏览器的编码问题.

都是我学习java时总结的,希望能帮到你.

response的字节输出流:

// 设置浏览器默认打开的时候采用的字符集编码

response.setHeader("Content-Type", "text/html;charset=UTF-8");

// 设置中文转成字节数组的时候取出的编码

response.getOutputStream().write("如果不设置编码,这里就是乱码".getBytes("UTF-8"));

response的字符输出流:

//设置浏览器默认打开的时候采用的字符集编码,response的字符流的缓冲区的编码.

response.setContentType("text/html;charset=UTF-8");

response.getWriter().println("中文");

request的doGet()编码解决:

String name = new String(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8");

System.out.println("GET方式:"+name);

request的doPost()编码解决:

request.setCharacterEncoding("UTF-8");

String name = request.getParameter("name");

System.out.println("POST方式:"+name);

下载文件时浏览器编码问题:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// 1.接收参数

String filename = new String(request.getParameter("filename").getBytes("ISO-8859-1"),"UTF-8");

System.out.println(filename);

// 2.完成文件下载:

// 2.1设置Content-Type头(获取文件的mime类型)

String type = this.getServletContext().getMimeType(filename);

//设置文件的mime类型

response.setHeader("Content-Type", type);

// 2.3web项目文件的绝对路径

String realPath = this.getServletContext().getRealPath("/download/"+filename);

// 获得浏览器的类型处理中文文件的乱码问题.(User-Agent:服务器收到客户端版本之类的一些信息)

String agent = request.getHeader("User-Agent");

System.out.println(agent);

if(agent.contains("Firefox")){

filename = base64EncodeFileName(filename);

}else{

//IE谷歌编码

filename = URLEncoder.encode(filename,"UTF-8");

}

// 2.2设置Content-Disposition头(固定写法,让浏览器必须下载,不能直接打开)

response.setHeader("Content-Disposition", "attachment;filename="+filename);

//获得文件

InputStream is = new FileInputStream(realPath);

// 获得response指定的方法获取输出流:如果用其他流是直接拷贝而不是下载

OutputStream os = response.getOutputStream();

int len = 0;

byte[] b = new byte[1024];

while((len = is.read(b))!= -1){

os.write(b, 0, len);

}

//响应流可以不关,在服务器做出相应后服务器会自动把response获得的流关闭

is.close();

}

//火狐

public static String base64EncodeFileName(String fileName) {

BASE64Encoder base64Encoder = new BASE64Encoder();

try {

return "=?UTF-8?B?"

+ new String(base64Encoder.encode(fileName

.getBytes("UTF-8"))) + "?=";

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

throw new RuntimeException(e);

}

}

java怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串

通过JDK1.6知道String类中getBytes(”编码“)方法可以讲一个数用指定的编码转成一个字节数组,String中通过指定的 charset解码指定的 byte 数组,构造一个新的 String。代码如下:

try{

String s = "java学习";

System.out.println(s);

String result = new String(s.getBytes("GB2312"),"iso-8859-1");

System.out.println(s);

} catch (UnsupportedEncodingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

扩展资料:

getBytes() 方法有两种形式:

1、getBytes(String charsetName): 使用指定的字符集将字符串编码为 byte 序列,并将结果存储到一个新的 byte 数组中。

2、getBytes(): 使用平台的默认字符集将字符串编码为 byte 序列,并将结果存储到一个新的 byte 数组中。

参考资料:

百度百科-getBytes()

关于java后台编码格式转换和java文件编码格式转换的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-26,除非注明,否则均为首码项目网原创文章,转载请注明出处。