- 浏览: 5166164 次
- 性别:
- 来自: 天津
博客专栏
-
实战 Groovy
浏览量:29341
文章分类
- 全部博客 (639)
- 代码之谜 (6)
- JavaScript quirks (5)
- 程序员 (92)
- Java (93)
- BT编程 (7)
- html/css (64)
- Groovy&Grails (42)
- Android (20)
- C/C++ (5)
- PHP/Perl/Python (46)
- 经典文章 (51)
- CodeIgniter (14)
- JQuery (10)
- 笑话 (4)
- 其他 (32)
- javascript (69)
- 云计算 (0)
- html5 (7)
- 面试 (8)
- google (3)
- nosql (2)
- nodejs (11)
- go (5)
- erlang (1)
- 小常识 (3)
- 冷知识 (5)
- database (4)
- web (12)
- 架构 (12)
- Exception (0)
最新评论
-
jqw1992:
https://www.chromefor.com/libra ...
[福利] 开发者必备的 Chrome 插件——ChromeSnifferPlus -
litjerk:
初步算了一下,目前最最精简的Win98版是5M,他5个小时多敲 ...
让人目瞪口呆的三位世界级电脑大师 -
379855529:
。。似乎重点没说NIO啊,前面基础只是铺垫的很好的,可是我要的 ...
Java NIO与IO的详细区别(通俗篇) -
springmvc_springjpa:
spring mvc demo教程源代码下载,地址:http: ...
一步步开发 Spring MVC 应用 -
匡建武:
Good
四个程序员的一天
6、Common Mail乱码问题 分析了一下commons mail的源码找到了原因。 由代码可以知道纯文本方式最终调用了Java Mail的 message.setContent(this.content, this.contentType); content是内容 contentType是类型,如text/plain, (我们可以试试直接用Java mail发邮件,设置文本内容不使用setText方法,也使用setContent("测试", "text/plain")方式,你可以看到内容也是乱码) 关键就在于text/plain,我们改成text/plain;charset=gb2312,ok乱码解决了。在commons mail我们看SimpleEmail 类中setMsg方法调用的就是 setContent(msg, TEXT_PLAIN);我们只需要将Email类中的常量TEXT_PLAIN修改一下加入 charset=你的字符集 ,重新打包jar,这样就可以了 。
以下是引用片段:
common mail是一个小而方便的mail包,他实现了对Java Mail的封装,使用起来十分的方便,但是我在使用他的时候发现,使用纯文本的内容发送,结果是乱码,代码如下:
public class TestCommonMail {
public static void main(String[] args) throws EmailException, MessagingException {
SimpleEmail email = new SimpleEmail();
email.setCharset("GB2312");
email.setHostName("smtp.163.com");
email.setSubject("test");
email.addTo(" test@163.com ");
email.setFrom(" test@163.com ");
email.setMsg("我的测试");
email.setAuthentication("test", "test");
email.send();
}
}
以下是引用片段:
源码如下:
public class SimpleEmail extends Email
{
public Email setMsg(String msg) throws EmailException, MessagingException
{
if (EmailUtils.isEmpty(msg))
{
throw new EmailException("Invalid message supplied");
}
setContent(msg, TEXT_PLAIN);
return this;
}
}
Email代码片段
public void setContent(Object aObject, String aContentType)
{
this.content = aObject;
if (EmailUtils.isEmpty(aContentType))
{
this.contentType = null;
}
else
{
// set the content type
this.contentType = aContentType;
// set the charset if the input was properly formed
String strMarker = "; charset=";
int charsetPos = aContentType.toLowerCase().indexOf(strMarker);
if (charsetPos != -1)
{
// find the next space (after the marker)
charsetPos += strMarker.length();
int intCharsetEnd =
aContentType.toLowerCase().indexOf(" ", charsetPos);
if (intCharsetEnd != -1)
{
this.charset =
aContentType.substring(charsetPos, intCharsetEnd);
}
else
{
this.charset = aContentType.substring(charsetPos);
}
}
}
}
email.send();的send方法将调用
public void buildMimeMessage() throws EmailException
{
try
{
this.getMailSession();
this.message = new MimeMessage(this.session);
if (EmailUtils.isNotEmpty(this.subject))
{
if (EmailUtils.isNotEmpty(this.charset))
{
this.message.setSubject(this.subject, this.charset);
}
else
{
this.message.setSubject(this.subject);
}
}
// ========================================================
// Start of replacement code
if (this.content != null)
{
this.message.setContent(this.content, this.contentType);
}
// end of replacement code
// ========================================================
else if (this.emailBody != null)
{
this.message.setContent(this.emailBody);
}
else
{
this.message.setContent("", Email.TEXT_PLAIN);
}
if (this.fromAddress != null)
{
this.message.setFrom(this.fromAddress);
}
else
{
throw new EmailException("Sender address required");
}
if (this.toList.size() + this.ccList.size() + this.bccList.size() == 0)
{
throw new EmailException(
"At least one receiver address required");
}
if (this.toList.size() > 0)
{
this.message.setRecipients(
Message.RecipientType.TO,
this.toInternetAddressArray(this.toList));
}
if (this.ccList.size() > 0)
{
this.message.setRecipients(
Message.RecipientType.CC,
this.toInternetAddressArray(this.ccList));
}
if (this.bccList.size() > 0)
{
this.message.setRecipients(
Message.RecipientType.BCC,
this.toInternetAddressArray(this.bccList));
}
if (this.replyList.size() > 0)
{
this.message.setReplyTo(
this.toInternetAddressArray(this.replyList));
}
if (this.headers.size() > 0)
{
Iterator iterHeaderKeys = this.headers.keySet().iterator();
while (iterHeaderKeys.hasNext())
{
String name = (String) iterHeaderKeys.next();
String value = (String) headers.get(name);
this.message.addHeader(name, value);
}
}
if (this.message.getSentDate() == null)
{
this.message.setSentDate(getSentDate());
}
if (this.popBeforeSmtp)
{
Store store = session.getStore("pop3");
store.connect(this.popHost, this.popUsername, this.popPassword);
}
}
catch (MessagingException me)
{
throw new EmailException(me);
}
}
发表评论
-
Java NIO与IO的详细区别(通俗篇)
2014-01-02 10:51 69426内核空间、用户空间 ... -
Java EE 单元测试
2013-09-12 10:56 4780觉得测试 Java EE 应用程序太困难、不方便或者太复杂? ... -
JUnit 测试建议
2013-07-22 09:04 3482以下是对JUnit实践的一 ... -
老生常谈:面试算法有必要吗?
2013-04-01 09:55 32763声明:虽然发表在愚人节,但是文章内容很严肃。 前几天在知 ... -
一步步开发 Spring MVC 应用
2013-02-23 10:53 10352Spring MVC 框架 Spring 框 ... -
「译」Java集合框架系列教程四:Set接口
2013-01-18 13:20 2529原文:The Set Interface 译文:Java集 ... -
「译」Java集合框架系列教程三:Collection接口
2013-01-18 13:16 2371原文:The Collection Interface 译 ... -
「译」Java集合框架系列教程二:集合接口
2013-01-18 13:13 2012原文:http://docs.oracle.c ... -
Java集合框架系列教程一:集合框架简介
2013-01-18 12:47 3031原文:http://docs.oracle.com/jav ... -
Java泛型-类型擦除
2012-12-05 15:48 14618一、概述 Java泛型在使用过程有诸多的 ... -
千万不要把 bool 当成函数参数
2012-11-16 08:33 12494我们有很多 Coding Style 或 代码规范。 但这一条 ... -
网站建设中关于eclipse启动参数的优化
2012-08-23 09:23 2502在网站建设中,经常用 ... -
Eclipse程序员要掌握的常用快捷键
2012-08-22 09:33 10062判断一个人的编程水平,就看他用键盘多,还是鼠标多。用键 ... -
java中equals和==的区别
2012-08-15 16:31 2032值类型是存储在内存中的堆栈(简称栈),而引用类型的变量在 ... -
名词王国里的死刑(翻译) - A Story of Hello World
2012-07-23 10:43 11812翻译自Steve Yegge的大 ... -
好代码是廉价的代码
2012-07-19 08:03 3296长久以来我一直主张:好代码是廉价的代码。 当我跟做开发 ... -
只要一个返回语句
2012-05-18 13:18 1821别再这样写了: publ ... -
java编程的78条黄金法则
2012-05-16 12:57 2364创建和销毁对象 1、考虑用静态工厂方法(返回类的实例的 ... -
for 循环为何可恨?
2012-05-15 12:44 1620Java的闭包(Closure)特征最近成为了一个热门话 ... -
Java 8 新功能
2012-05-02 08:48 1902我们已经急不可待想知道Java 8可用的新功能,其中大部 ...
相关推荐
乱码的处理!程序员永远无法避免的话题,解决乱码总汇
Java避免UTF-8的csv文件打开中文出现乱码的方法 在Java中,避免UTF-8的csv文件打开中文出现乱码的方法是非常重要的。csv文件是 comma separated values 的缩写,常用于数据交换和导入导出操作。然而,在Java中读取...
乱码处理文件乱码处理文件乱码处理文件乱码处理文件乱码处理文件乱码处理文件乱码处理文件乱码处理文件乱码处理文件乱码处理文件乱码处理文件乱码处理文件乱码处理文件乱码处理文件乱码处理文件乱码处理文件乱码处理...
最后,报告中提到的“001▇本次薪酬调研岗位列表一X”可能是报告中岗位列表的一个部分,但由于扫描文本中出现了乱码,这部分内容的具体含义无法准确理解。但可以确定的是,岗位列表应该是详细的各行业或各部门岗位...
8. **注意事项**:确保在整个Web应用程序中保持编码的一致性,包括数据库连接、文件读写、响应输出等环节,都应使用相同的字符编码,以避免出现乱码问题。 总之,解决URL乱码问题需要理解URL编码机制,正确设置页面...
这一步骤的目的是避免服务器强制使用UTF-8编码,而是采用与客户端相匹配的编码格式进行通信,减少乱码的产生。 ### 四、总结 通过上述步骤,可以有效解决Serv-U9.x版本FTP服务器在处理中文文件名时出现的乱码和...
【乱码处理】在中国,程序员经常需要面对的一个挑战就是乱码问题,这主要源于中英文字符编码的不同。编码机制是导致乱码的核心原因,中文字符通常使用GBK或GB2312等编码,而英文字符则普遍采用ASCII或Unicode。如果...
oracle乱码解决功能 Oracle乱码解决功能是指在使用Oracle数据库时,汉字显示异常的解决方法。这种问题的产生是由于字符集的设置不当所致。字符集是Oracle为适应不同语言文字显示而设定的,用于汉字显示的字符集...
在处理乱码问题时,我们可以通过Filter来设置合适的字符编码,确保数据的正确解码和编码。 三、Filter实现中文乱码解决方案 1. 创建Filter类: 首先,我们需要创建一个实现javax.servlet.Filter接口的类,例如命名...
当涉及到将中文数据提交到服务器时,由于编码格式不匹配或者处理不当,可能会导致接收方接收到的数据显示为乱码。要解决这个问题,我们需要理解字符编码的基本原理,并采取相应的策略来确保数据在传输过程中的完整性...
在IT行业中,乱码问题是一个常见的困扰,尤其是在处理多语言环境或者进行数据传输时。"乱码处理操作类"指的是为了正确显示或处理文本而设计的特定代码类,通常用于解决Java SSH(Spring、Struts、Hibernate)框架下...
Java 中文乱码问题是一个常见的编程困扰,尤其对于处理中文字符的Java程序而言。这个问题通常源于字符编码...通过细心配置和适当地指定编码,我们可以有效地避免乱码问题,确保程序在各种环境中都能正确处理中文字符。
4. **使用流处理**:利用Node.js的流API,可以逐步生成和写入PDF,而不是一次性生成整个文档,从而减少内存占用。 5. **升级Node.js版本**:新版本的Node.js通常包含更好的内存管理和优化,升级可能有助于解决问题...
在C#编程中,处理汉字乱码问题是一个常见的需求,尤其是在读取或写入文本文件时。当在C#控制台应用中遇到汉字输出乱码的情况,这通常是因为编码不匹配所导致的。编码是字符集与二进制数据之间的转换规则,不同的系统...
乱码通常指的是字符显示不正确或无法识别,这可能由于编码格式不匹配、文件损坏、程序设置不当等原因引起。下面将详细讨论乱码产生的原因、解决方案以及如何预防。 一、乱码产生的原因 1. **编码格式不一致**:...
在默认情况下,`maven-javadoc-plugin`插件在生成Javadoc文档时采用的是ISO-8859-1编码格式,这种编码方式无法正确解析中文字符,从而导致中文乱码现象。 ##### 2.2 解决方案 - **POM文件配置** 在`pom.xml`文件...
### 中文乱码处理问题总结 #### 一、引言 在进行中文字符处理时,经常会出现乱码问题。这主要是因为不同的系统、程序或组件可能采用不同的编码方式,而这些编码方式之间的转换不当就会导致乱码现象。本文将重点...
这文件,我也不知为毛,下载后“文件名字”会出现一些乱码,请将乱码删除后,便可打开,不关我的事,是网站系统造成的! 好吧,这个中文手册,原来网上就有,但是哥下载后,发现字体尽其过份地小,看着很累,很不爽...
3. **软件编码识别错误**:部分软件可能无法准确识别文件的编码格式,尤其是在处理非标准编码或混合编码的文件时。 **解决方法**: 1. **手动指定编码**:在编程时,可以显式指定文件的编码格式,例如在Java中使用...
然而,在处理中文字符时,由于编码不一致或者处理不当,可能会出现中文乱码问题。这个问题困扰了很多开发者,但通过了解编码原理和采用正确的方法,可以有效地解决。下面将详细阐述servlet和jsp中文乱码的处理方式。...