txt文件中的特殊字符未在InputStream中传递

时间:2016-05-03 22:12:08

标签: java

我有一个

InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("templates/createUser/new-user.txt");

new-user.txt的内容为:

Hello™how ru®

但是当它们显示在输出中时,它们显示为

您好,你好吗

您能告诉我应该对我的txt文件做出哪些更改,以便它开始相应地显示数据。

更新

所以这是代码: -

Handlebars handlebars = new Handlebars(); InputStream txtInputStream = this.getClass().getClassLoader() .getResourceAsStream("templates/createUser/new-user.txt"); Template textTemplate = handlebars.compileInline(IOUtils.toString(txtInputStream)); String emailText = textTemplate.apply(vars);

1 个答案:

答案 0 :(得分:1)

问题不在于InputStream对象。 InputStreams只是字节流,它们不区分编码。问题是你应该用这个作为你的读者:

Reader reader = new InputStreamReader(inputStream, "UTF-8");

而不是使用它:

Reader reader = new InputStreamReader(inputStream); // does not specify encoding

然后您可以使用以下字符串获取字符串:

String theString = IOUtils.toString(inputStream, "UTF-8");

修改 我没有意识到你在评论中发布了完整的代码。只需将您的倒数第二行更改为:

Template textTemplate = handlebars.compileInline(IOUtils.toString(txtInputStream, "UTF-8"));