Java 从InputStream读取UTF-8编码文本
我在从输入流中读取所有日文/中文字符时遇到问题 基本上,我是从API检索JSON对象 下面是我的代码:Java 从InputStream读取UTF-8编码文本,java,url,utf-8,inputstream,bufferedreader,Java,Url,Utf 8,Inputstream,Bufferedreader,我在从输入流中读取所有日文/中文字符时遇到问题 基本上,我是从API检索JSON对象 下面是我的代码: try { URL url = new URL(string); BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream(),StandardCharsets.UTF_8)); result = br.readLine(); b
try {
URL url = new URL(string);
BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream(),StandardCharsets.UTF_8));
result = br.readLine();
br.close();
} catch(Exception e) {
}
由于某些原因,并非所有字符都由输入流读取。有什么问题吗
具体地说,当我在控制台中打印出一些字符时,它们会出现,而有些字符则显示为带有问号的黑框。另外,当我通过浏览器检查实际的JSON对象时,没有带问号的黑框。试试这个:“ISO-8859-1” 您在“打印到控制台”时看到的内容实际上与是否读取数据无关,而是与控制台的功能有关
如果您正在从URL获取数据,并且您确实知道所获取的字节表示UTF-8编码的文本,并且整个数据适合一行文本,那么您的代码就没有理由不工作
听起来好像你不确定事情是否正常,因为你正试图将文本打印到你的控制台上。也许您的控制台未设置为呈现UTF-8编码文本?也许您的控制台字体没有足够的字形来覆盖字体
以下是两件您可以尝试的事情:
hextump-C
的命令(在*nix系统上,我不知道如何在Windows中执行),查看二进制表示,以确保所有预期字符都在那里如果您仍然怀疑读取的远程数据不正确,您可以通过JSON验证器运行检索到的文本,以确保。
readLine()
只读取一行文本?实际上,我可以检索整个JSON对象。所以我认为这不是问题所在。