Hi,
I have a setup, where emails received by mail server(postfix) are taken on and the resulting email's body(html or plain text) and attachments are parsed to separate files and saved, for this i use javax mail api.
The problem occurs for email body when it is in Chinese (simple and traditional) (charset GB2312, as per email header) or Korean (charset ks_c_5601-1987, as per email header),
the resulting parsed email bodies show character corruption (the characters are displayed as '?').
Also even if I am explicitly saving the charset to be the one as suggested by email header the problem remains same.
I am unable to understand why rest of the programs like Google mail, Outlook can parse the mail body right while my code could not.
Please suggest what am i doing wrong?
Adding the sample code(after i narrowed down the problem):
The Chinese text is as follows (saved it on my machine with UTF-8 encoding):
高雄市颱風天淹水,高雄市長陳菊「休息」挨批,國民黨今天(10月1日)在高雄市三多商圈豎立看板,上面是一個撐著雨傘的民眾,示意要大家安靜,旁邊就寫著「噓!陳菊市長在睡覺」。這個看板明顯是在諷刺陳菊市長颱風天下午在官邸休息。國民黨籍議員在議會依舊持續砲轟。
國民黨在三多商圈設立看板「噓!陳菊市長在睡覺」,諷刺意味不言可喻,國民黨籍高雄市議員陳麗娜說,其實很多官員真的都不敢叫醒陳菊市長。看板的內容,路過民眾一看就知道講的是哪件事,有的民眾覺得疲勞休息無可厚非,但也有人認為市長休息,不應該沒有人代理指揮救災。
國民黨團議員持續在議會質詢陳菊救災不力,對於國民黨豎立的看板,陳菊則是表示尊重,不與置評。天天遭到砲轟,陳菊的心情每天都很沉重。
中新网北京10月1日电 今天是中华人民共和国成立61周年纪念日。今天上午,党和国家领导人胡锦涛、温家宝、贾庆林、李长春、习近平、李克强、贺国强、周永康等,同首都各界代表一起来到天安门广场,向人民英雄纪念碑敬献花篮,深切缅怀为实现民族独立、人民解放和国家富强、人民幸福英勇献身的革命先烈。
随后,全场肃立,向为中国人民解放事业和共和国建设事业英勇献身的烈士们默哀。
中共中央,全国人大常委会,国务院,全国政协,中央军委,各民主党派、全国工商联和无党派爱国人士,各人民团体,首都各界群众,中国少年先锋队分别敬献的9个大型花篮,一字排开地摆放在人民英雄纪念碑北侧。一个个花篮的红色缎带上写着“人民英雄永垂不朽”8个金色大字,一朵朵盛开的鲜花散发出缕缕清香,寄托着对革命先烈的无限敬仰和无尽怀念。
在军乐队演奏的激昂深情的《献花曲》旋律中,18名礼兵抬起9个花篮,正步走向人民英雄纪念碑,将花篮摆放到纪念碑基座前。
胡锦涛等党和国家领导人缓步登上纪念碑基座,在花篮前驻足凝视。
胡锦涛神情庄重地走近花篮,仔细整理花篮上的红色缎带。
接着,胡锦涛等党和国家领导人绕行一周,深情瞻仰人民英雄纪念碑。碑座四周的大型浮雕,记载着近代以来中国人民顽强不屈的奋斗历程。胡锦涛等边走边看,向人民英雄致以深深的敬意。
伴随着动人的乐曲声,首都各界代表排成纵队,依次登上纪念碑基座。他们当中,有身经百战的老战士代表,有胸佩奖章的劳动模范代表,有为成功举办北京奥运会、残奥会做出突出贡献的先进集体和先进个人代表,有来自基层的工人、农民、科技工作者、大中学校师生代表,有军容严整的人民解放军和武警部队官兵,有身着鲜艳服装的少数民族代表,有戴着红领巾的少年儿童……在这个庄严的时刻,人们怀着崇敬的心情瞻仰人民英雄纪念碑,共同缅怀革命先烈的丰功伟绩。
敬献花篮仪式由中共中央政治局委员、北京市委书记刘淇主持。
Following is the code that parses it and character corruption occurs:
@Test
public void testStream() throws IOException{
FileInputStream in = new FileInputStream("C:\\EmailTest\\Chinese2.txt");
String Body = convertStreamToString(in);
FileOutputStream fileout = new FileOutputStream("C:\\Out.txt");
fileout.write(Body.getBytes(Charset.forName("GB2312")));
in.close();
fileout.flush();
fileout.close();
}
public String convertStreamToString(InputStream is) throws IOException {
if (is != null) {
StringBuilder sb = new StringBuilder();
String line;
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
while ((line = reader.readLine()) != null) {
sb.append(line).append("\n");
}
} finally {
is.close();
}
return sb.toString();
} else {
return "";
}
}
The resulting Chinese is as follows:
?高雄市??天淹水,高雄市??菊「休息」挨批,?民?今天(10月1日)在高雄市三多商圈?立看板,上面是一??著雨?的民?,示意要大家安?,旁?就?著「?!?菊市?在睡?」。??看板明?是在?刺?菊市???天下午在官邸休息。?民?籍??在??依?持???。
?民?在三多商圈?立看板「?!?菊市?在睡?」,?刺意味不言可喻,?民?籍高雄市????娜?,其?很多官?真的都不敢叫醒?菊市?。看板的?容,路?民?一看就知道?的是哪件事,有的民??得疲?休息?可厚非,但也有人??市?休息,不???有人代理指?救?。
?民????持?在?????菊救?不力,?於?民??立的看板,?菊?是表示尊重,不?置?。天天遭到??,?菊的心情每天都很沉重。
中新网北京10月1日电 今天是中华人民共和国成立61周年纪念日。今天上午,党和国家领导人胡锦涛、温家宝、贾庆林、李长春、习近平、李克强、贺国强、周永康等,同首都各界代表一起来到天安门广场,向人民英雄纪念碑敬献花篮,深切缅怀为实现民族独立、人民解放和国家富强、人民幸福英勇献身的革命先烈。
随后,全场肃立,向为中国人民解放事业和共和国建设事业英勇献身的烈士们默哀。
中共中央,全国人大常委会,国务院,全国政协,中央军委,各民主党派、全国工商联和无党派爱国人士,各人民团体,首都各界群众,中国少年先锋队分别敬献的9个大型花篮,一字排开地摆放在人民英雄纪念碑北侧。一个个花篮的红色缎带上写着“人民英雄永垂不朽”8个金色大字,一朵朵盛开的鲜花散发出缕缕清香,寄托着对革命先烈的无限敬仰和无尽怀念。
在军乐队演奏的激昂深情的《献花曲》旋律中,18名礼兵抬起9个花篮,正步走向人民英雄纪念碑,将花篮摆放到纪念碑基座前。
胡锦涛等党和国家领导人缓步登上纪念碑基座,在花篮前驻足凝视。
胡锦涛神情庄重地走近花篮,仔细整理花篮上的红色缎带。
接着,胡锦涛等党和国家领导人绕行一周,深情瞻仰人民英雄纪念碑。碑座四周的大型浮雕,记载着近代以来中国人民顽强不屈的奋斗历程。胡锦涛等边走边看,向人民英雄致以深深的敬意。
伴随着动人的乐曲声,首都各界代表排成纵队,依次登上纪念碑基座。他们当中,有身经百战的老战士代表,有胸佩奖章的劳动模范代表,有为成功举办北京奥运会、残奥会做出突出贡献的先进集体和先进个人代表,有来自基层的工人、农民、科技工作者、大中学校师生代表,有军容严整的人民解放军和武警部队官兵,有身着鲜艳服装的少数民族代表,有戴着红领巾的少年儿童……在这个庄严的时刻,人们怀着崇敬的心情瞻仰人民英雄纪念碑,共同缅怀革命先烈的丰功伟绩。
敬献花篮仪式由中共中央政治局委员、北京市委书记刘淇主持。
Is it because of Java stream classes that I am facing the problem?
thanks in advance
Ashish