一个不是编码格式的疑似乱码问题

之前遇到的另一个问题,还是升级11g到12c的时候遇到的。

升级之后下游系统反应收到的邮件文件名是乱码,看看这个文件名...:

=UTF-8Q252762=5F=E5=B9=BF=E4=B8=9C=

=UTF-8Q=E7=9D=A1=E5=86=AC=E5=AE=9D=E5=AE=B6=E7=94=A8=

=UTF-8Q=E7=BA=BA=E7=BB=87=E5=93=81=E6=9C=89=E9=99=90=

=UTF-8Q=E5=85=AC=E5=8F=B8=5F2018090= =UTF-8Q5=5F=E9=80=80=E8=B4=A7=E.pdf=

(现在看起来 这并不是乱码)本来觉得这个问题没什么,大概差不多改一个编码格式就好了,稍微有点疑惑的是为什么原来的项目没有问题呢?

之后开始试图本地还原这个问题,但是本地遇到了另一个问题,就是新的DB存储的中文也是乱码。。。和QA和PP环境的问题还不吻合。。。

本地乱码的原因是之前更换了连接的数据库,而检查数据库的编码格式不是中文格式,一时还改不了,所以只能先debug项目,让在逻辑层的数据先是中文的,顺利还原出问题。

之后是查看之前的代码,发现了疑似问题的所在。出现了以下的代码:

remoteFileName = (String) parser.evaluate(null, templateContext,new CommonTemplate(new CommonSubTemplate(

"remoteFileName",this.writePattern)));

remoteFileName =new String(remoteFileName.getBytes(“UTF-8”),"UTF-8");

感觉是存在问题的,因为String是用默认编码格式的,所以如果编码格式不是UTF-8,getsBytes就会出现乱码。为了验证我的想法我还编写了简单的测试代码进行验证,代码和结果如下:



那么解决方式就是用默认编码格式getBytes应该就没有问题了。然后进行本地和QA测试,输出文件明为“中文文件.pdf”,果然可以顺利输出了,开开心心上PP。

But but but,下午QA小姐姐跟我说,PP环境测试发现依旧是乱码!!!

当时真的是很崩溃,突然找不到方向了。再重新理清思路之后有两条路:1)问系统support拉相关的系统参数,把新旧系统的参数进行比对,看看那里发生了变化。2)因为QA没发现问题,但是PP重现了。那么有可能是新的代码没有顺利上PP,或者代码依旧存在问题。如果是后者我应该完全模拟PP环境的flow设置在QA上重新测试,或者在PP环境测我的QA环境flow设置观察是不是我的测试case问腿。

好的,虽然他人建议我第一个方案找到问题可能不用改代码就能解决了,但是我考虑到交流成本还有各种未知,我觉得方案二更可控。于是我进行了新的一轮测试,发现首先PP的代码与QA环境一致,其次我在QA环境配置的原来PP环境的flow发出的邮件附件确实也是乱码。这就很奇怪,观察我之前新增的各部分的log,发现一直到输出的时候都是正常的。其中我还做了另一个测试就是用另一个邮箱发送附件到目标邮箱,中文名正常,排除是邮箱的问题。

所以接下来的思路就是观察两个flow的配置有什么不同,根据以前的经验并没发现异样,但是我灵机一动只改了QA原来测试flow上的输出文件名“中文文件”成能还原出问题的文件名格式“12345_这是一段很长很长的中文公司信息_12345.pdf”。发现问题又出现了!这就很棒棒,虽然不清楚原理,但是我继续尝试掐头去尾,只生成文件名“这是一段很长很长的中文公司信息.pdf”,还是有乱码问题!难道和文件名的长度有关?于是我进一步进行测试,不断缩短文件名,当文件名长度为六个的时候乱码消失了!!!果然和文件名的长度有关,那么是为什么呢?

于是我上网查询,发现这个坑很多人都踩过。当文件名过长的时候,默认设置下会对文件名进行截断,所以完整的中文编码可能会被分开变成以乱疑似乱码的文字。解决方式就是设置System.getProperties().setProperty("mail.mime.splitlongparameters", "false");(因为Linux下默认是true)感觉这下问题真正被锁定了。

参考链接:

https://blog.csdn.net/z69183787/article/details/79238735

https://blog.csdn.net/baidu_35962462/article/details/81062629

最后我们通过在Weblogic启动参数设置上增加了 -Dmail.mime.splitlongparameters=false,然后经过各个环境的测试,发现中文文件名不在乱码,从而真正解决了这个问题。跌宕起伏的一天终于以完美结局首位

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,311评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,339评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,671评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,252评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,253评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,031评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,340评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,973评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,466评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,937评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,039评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,701评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,254评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,259评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,485评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,497评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,786评论 2 345

推荐阅读更多精彩内容