千家信息网

java汉字乱码的原因是什么以及有哪些解决方法

发表于:2024-11-25 作者:千家信息网编辑
千家信息网最后更新 2024年11月25日,今天就跟大家聊聊有关java汉字乱码的原因是什么以及有哪些解决方法,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。在基于Java的编程中,经常会
千家信息网最后更新 2024年11月25日java汉字乱码的原因是什么以及有哪些解决方法

今天就跟大家聊聊有关java汉字乱码的原因是什么以及有哪些解决方法,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

  在基于Java的编程中,经常会碰到汉字的处里及显示的问题,比如一大堆乱码或问号。

  这是因为JAVA中默认的编码方式是UNICODE,而中国人通常使用的文件和DB都是基于GB2312或者BIG5等编码,故会出现此问题。

  1、在网页中输出中文。

  JAVA在网络传输中使用的编码是"ISO-8859-1",故在输出时需要进行转化,如:

  String str="中文"; str=new String(str.getBytes("GB2312"),"8859_1");

  但假如在编译程序时,使用的编码是"GB2312",且在中文平台上运行此程序,不会出现此问题,一定要注重。

  2、从参数中读取中文 这正好与在网页中输出相反如:

  str=new String(str.getBytes("8859_1"),"GB2312");

  3、操作DB中的中文问题 一个较简单的方法是:在"控制面扳"中,把"区域"设置为"英语(美国)"。

  假如还会出现乱码,还可进行如下设置:

  取中文时:

  str=new String(str.getBytes("GB2312"));

  向DB中输入中文:

  str=new String(str.getBytes("ISO-8859-1"));

  4、在jsp中的中文解决:

  在"控制面扳"中,把"区域"设置为"英语(美国)".

  在JSP页面中加入: 假如还不行正常显示,

  则还要进行下面的转换: 如:

  name=new String(name.getBytes("ISO-8859-1"),"GBK");

  就不会出现中文问题了。

  也有不少用户反馈在发邮件的时候也会出现文字乱码的情况。

  1、在发送正文时指定正文编码:

  在发送邮件时使用

  MimeBodyPart body = new MimeBodyPart();

  body.setContent(content, "text/html;charset=GB2312");

  注意此时的content编码必须是所指定的编码格式。

  2、在设置邮件标题时也要指定标题的编码:

  MimeMultipart mmp=new MimeMultipart();

  mmp.setSubject(subject, "GB2312");

  同上也要求subject的编码和指定的编码一致。

  3、发送正文时也可以在header中指定传输编码:

  body.setHeader("Content-Transfer-Encoding", "base64"); // 指定使用base64编码

  4、示例如下:

  

 import java.util.Properties;  import javax.mail.*;  import javax.mail.internet.*;  public class MailSender {  public static void main(String[] args) {  try {  String host = "staff.tixa.com"; // smtp主机  String username = "sample@staff.tixa.com"; // 认证用户名  String password = "sample"; // 认证密码  String from = "例子"; // 发送者  String to = "toOne@staff.tixa.com, toAnother@staff.tixa.com"; // 接受者,用","分隔  String subject = "测试例子";  String content = "仅仅是个供测试的例子。";  // 建立session  Properties prop = new Properties();  prop.put("mail.smtp.host", host);  prop.put("mail.smtp.auth", "true"); //是否需要认证  Session session = Session.getDefaultInstance(prop, null);  // 创建MIME邮件对象  MimeMessage mimeMsg = new MimeMessage(session);  MimeMultipart mp = new MimeMultipart();  // 设置信息  mimeMsg.setFrom(new InternetAddress(from));  mimeMsg.setSubject(subject, "GB2312"); // !!!注意设置编码  mimeMsg.setRecipients(  Message.RecipientType.TO,  InternetAddress.parse(to));  // 设置正文  BodyPart body = new MimeBodyPart();  body.setContent(content, "text/plain;charset=GB2312"); // !!!注意设置编码  mp.addBodyPart(body);  mimeMsg.setContent(mp);  // 发送邮件  Transport transport = session.getTransport("smtp");  transport.connect(host, username, password);  transport.sendMessage(mimeMsg,mimeMsg.getRecipients(Message.RecipientType.TO));  transport.close();  }  catch(Exception exp) {  exp.printStackTrace();  }  }


看完上述内容,你们对java汉字乱码的原因是什么以及有哪些解决方法有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

编码 中文 乱码 邮件 问题 正文 方法 汉字 例子 内容 认证 输出 原因 区域 标题 用户 程序 网页 美国 英语 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 物联网内部网络安全 武汉移动软件开发哪家好 有关环保的数据库文件 荣耀软件开发招聘有年龄要求吗 网络直播服务器是什么 计算机网络安全防病毒措施 数据库管理系统定义 网络安全教育班会开场 软件开发副经理 联通网络技术参数 安全卫士怎么设置代理服务器 张家港品牌网络技术要多少钱 移动国产服务器集采 定点医疗机构数据库动态维护注销 预防网络安全危险的方法 下面哪个不是数据库技术的特点 邢台软件开发大概费用 这个数据库有医生数据表doc 大航海时代ol 数据库 宝山区一站式网络技术质量服务 惠普服务器12v电源改装 专业软件开发用苹果电脑 文件管理软件要服务器吗 财务数据网络安全重要性 微信支付服务器回调区分用户 数据库最常见的概念模型是 数据库技术信息供方评价表 软件开发行业政治法律环境 软件开发包含哪些经营范围 世界互联网专访鸭梨科技
0