Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 未在InputStream中传递txt文件中的特殊字符_Java - Fatal编程技术网

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

Java 未在InputStream中传递txt文件中的特殊字符,java,Java,我有一个 InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("templates/createUser/new-user.txt"); 而new user.txt的内容是: 你好™ 如何使用r u® 但当它们显示在输出中时,它们显示为 你好��� 你怎么样�� 你能告诉我我应该对我的txt文件做什么更改,以便它开始相应地显示数据吗 更新 下面是代码:- 把手把手把手=新把手(); Inp

我有一个

InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("templates/createUser/new-user.txt");
new user.txt
的内容是:

你好™ 如何使用r u®

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

你好��� 你怎么样��

你能告诉我我应该对我的txt文件做什么更改,以便它开始相应地显示数据吗

更新

下面是代码:-

把手把手把手=新把手();
InputStream txtInputStream=this.getClass().getClassLoader()
.getResourceAsStream(“templates/createUser/new user.txt”);
Template textmplate=handlebar.compileInline(IOUtils.toString(txtInputStream));

字符串emailText=textTemplate.apply(vars)

问题不在于InputStream对象。输入流只是字节流,它们不区分编码。问题是您应该将其用作您的阅读器:

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")); 

在哪里展示?这非常重要。内容正在传递到MailService。直到inputStream被传递到MailService时,它看起来就像™ 但一旦我看到输出邮件,它就变成了���再次定义,请参见。这是一个编码问题,所以无论您使用什么工具或技巧来查看或读取它,都可能有不正确的编码。另外,文件本身的编码是什么?™ 是unicode
\u2122
,UTF-8
E2 84 A2
,而®是unicode
\u00AE
,UTF-8
C2 AE
,所以
将指示您的文件是UTF-8,因此请确保您读取的是UTF-8。您没有指定
InputStream
如何成为
字符串,因此很难说您哪里做错了。