java un编码_java – Unescape和转换字符串编码

我必须在Java中将String解析为Date对象.

我得到的字符串MMM d yyyy HH:mm:ss z,区域设置为法语.

由于法语口音的编码,日期是在二月,八月或十二月时出现问题.例如,我得到了dé c. 15 2011 16:55:38 CET 2011年12月15日.

我不能改变字符串的创建方式,所以我必须处理我身边的错误编码.似乎在生成时字符串编码错误(UTF-8内容编码为ISO 8859-1)然后转义.

现在我使用:

stringFromXML = stringFromXML.replaceAll("é", "é");

stringFromXML = stringFromXML.replaceAll("û", "û");

它之所以有效,是因为法国月份中唯一的重点是é和û,但有没有更清晰的方式来转换角色?

解决方法:

你需要两个步骤:

>解析数字字符引用,例如,使用Andy建议的StringEscapeUtils:

String unescaped = StringEscapeUtils.unescapeHtml(in);

>通过将字符视为UTF-8代码单元来修复编码:

String out = new String(unescaped.getBytes("ISO-8859-1"), "UTF-8");

标签:java,date,encoding,utf-8,iso-8859-1

来源: https://codeday.me/bug/20190714/1455909.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值