繁体   English   中英

再次是String转换:UNIX Windows-1252到String

It's the String conversion again: UNIX Windows-1252 to String

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在使用Java下载Java网站,方法如下:

myUrl = new URL("here is my URL");
            in = new BufferedReader(new InputStreamReader(myUrl.openStream()));

但是,此文件中有一些特殊字符,如ä,ö和ü。 我需要能够正确打印这些。

我尝试使用以下方式编码字符串:

String encodedString = new String(toEncode.getBytes("Windows-1252"), "UTF-8");

但是它所做的就是用?替换这些特殊字符?

当我尝试使用从Chrome和Notepad ++下载的.html文件打开要在此处进行打印的内容时,它显示(在右下角) UNIXWindows-1252 这就是我对编码文件的了解。

我可以采取什么其他步骤找出问题所在?

- 和 -

如何转换此文件,以便可以用Java正确读取和打印它?

抱歉,这个问题有点愚蠢……我根本不知道,并且在互联网上找不到任何东西。

1 个回复

好,所以您在这里混合了很多东西。

首先,您需要执行以下操作:

new InputStreamReader(myUrl.openStream())

这将打开读者,是的; 但是,它将使用默认的JRE / OS Charset 也许不是您想要的。

尝试指定您要使用UTF_8(注意,Java 7+代码):

try (
    final InputStream in = myUrl.openStream();
    final Reader reader = new InputStreamReader(in, StandardCharsets.UTF_8);
) {
    // read from the reader here
}

现在,您正在混合...

您从InputStream阅读; InputStream仅知道如何读取byte s。

但是你想要文字; 在Java中,文本表示char序列。

让我们暂时忘记您想要的char并专注于您想要文本的事实; 让我们用char代替信鸽。

现在,您需要做的是将字节流转换为载体鸽子流。 为此,您需要一个特定的过程。 在这种情况下,该过程称为解码

现在回到Java。 也存在一个相反的过程: 信鸽(或char )流编码为字节流。

诀窍...有几种方法可以做到这一点。 Unicode将它们称为character codings 在Java中,提供编码器解码器的基类是Charset

现在, InputStreamReader接受一个Charset作为第二个参数……您应该始终指定它。 如果您不这样做,则:

new InputStreamReader(in);

将等同于:

new InputStreamReader(in, Charset.defaultCharset());

Charset.defaultCharset()为Not。 保证。 至。 是。 的。 相同。 其中。 实现。 的。 JRE。

1 从String []转换为String,然后再次转换为String []

在我的JADE程序中,一个代理程序需要向另一个代理程序发送ACL消息。 对于发送消息的代理(agent1),它存储必须发送的String []值数组。 但是,为了实际发送ACL消息,内容只能是String,而不能是其他任何内容。 用于向消息添加内容的方法如下: msg.setConte ...

3 将String转换为字节,然后再次返回

我有一个字符串cityName ,将其解码为以下字节: byte[] cityBytes = cityName.getBytes("UTF-8"); ...并将字节存储在某处。 当我检索这些字节时,如何将它们解码回字符串? ...

4 再次将JSON数组转换为String和JSON

我正在将一些发布数据发送到我创建的本地php服务器。 我希望发布数据为json格式,以便以后从php轻松进行提取。 使用Namevaluepairs ,我将jsonArray转换为String并在php中的文本文件中获得以下结果: 在android studio中,我有一些代码将内容 ...

7 Windows-1252在Perl中将Unicode转换

我具有Windows-1251十六进制格式的ef(西里尔字母)字符。 取值为0xF4。 我想转换并在perl中打印字符。 我可以通过unicode 0x0444来做到这一点。 我正在寻找一种将0xF4转换为0x044的方法。 我最终的计划是给定任何编码形式的任何字符的十六进制值,我应该 ...

8 将vcards转换为Windows-1252

我正在尝试用C#编写一个程序,它将带有多个联系人的vCard(VCF)文件拆分为每个联系人的单个文件。 据我所知,vCard需要保存为ANSI(1252)才能让大多数手机读取它们。 但是,如果我使用StreamReader打开VCF文件,然后使用StreamWriter将其写回(将125 ...

10 如何将Java自定义对象转换为String并再次返回

我想编写一个转换器,将我的自定义对象转换为DTO并返回。 我该如何处理? 我有2个约会类,而Doctor是约会的子类。 我希望转换器尽可能简单。 我不是在寻找直接的答案,而是希望了解如何使用的技巧。 下面的类有getter和setter: public class Docto ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM