- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有如下一段代码
public static void main(String[] args) throws UnsupportedEncodingException {
System.out.println(Charset.defaultCharset().toString());
String accentedE = "é";
String utf8 = new String(accentedE.getBytes("utf-8"), Charset.forName("UTF-8"));
System.out.println(utf8);
utf8 = new String(accentedE.getBytes(), Charset.forName("UTF-8"));
System.out.println(utf8);
utf8 = new String(accentedE.getBytes("utf-8"));
System.out.println(utf8);
utf8 = new String(accentedE.getBytes());
System.out.println(utf8);
}
上面的输出结果如下
windows-1252
é
?
é
é
谁能帮我理解这是做什么的?为什么这个输出?
最佳答案
如果您已经有了一个String
,就没有必要立即对其进行编码和解码,该字符串已经是有人对原始字节进行解码的结果。
在字符串文字的情况下,某人是编译器将您的源代码读取为原始字节并以您指定的编码对其进行解码。如果您以 Windows-1252 编码物理保存源文件,并且编译器将其解码为 Windows-1252,则一切正常。如果不是,您需要通过声明编译器在编译源代码时使用的正确编码来解决此问题...
线
String utf8 = new String(accentedE.getBytes("utf-8"), Charset.forName("UTF-8"));
什么都不做。 (编码为 UTF-8,解码为 UTF-8 == no-op)
线
utf8 = new String(accentedE.getBytes(), Charset.forName("UTF-8"));
将字符串编码为 Windows-1252,然后将其解码为 UTF-8。结果只能在 Windows-1252 中解码(因为它是在 Windows-1252 中编码的,duh),否则你会得到奇怪的结果。
线
utf8 = new String(accentedE.getBytes("utf-8"));
将字符串编码为 UTF-8,然后将其解码为 Windows-1252。与之前的案例适用相同的原则。
线
utf8 = new String(accentedE.getBytes());
什么都不做。 (编码为 Windows-1252,解码为 Windows-1252 == no-op)
类比可能更容易理解的整数:
int a = 555;
//The case of encoding as X and decoding right back as X
a = Integer.parseInt(String.valueOf(a), 10);
//a is still 555
int b = 555;
//The case of encoding as X and decoding right back as Y
b = Integer.parseInt(String.valueOf(b), 15);
//b is now 1205 I.E. strange result
这两个都没有用,因为在执行任何代码之前我们已经有了所需的整数 555
。
有必要当字符串离开您的系统时将您的字符串编码为原始字节,并且当它们进入您的系统时需要将原始字节解码为字符串。无需在系统内立即编码和解码。
关于Java 字符串字符编码 - 法语 - 荷兰语语言环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15500529/
我正在从事一个项目,我必须将 Pocketsphinx 的语音功能集成到一个 Android 应用程序中。事实上,我必须集成 Pocketpshinx 提供的音素识别功能,它应该能够识别法语中的音素,
我想在 javascript/php 中实现法语、俄语等外语的拼写纠正。对于英语拼写检查器,我可以使用编辑距离算法从英语词典中检索单词(词典是使用 Trie 构建的)并返回出现频率最高的单词。我还找到
我有一个 .NET MVC 页面,其中包含每个项目的列表 rel 中的编码描述.我希望能够搜索带有 rel 的所有项目包含我的搜索查询。 其中一个字段的值为 htmlentities rel='D&
我有这种日期格式: Mon, Nov 19, 2018 我希望它采用法语短日期格式(DD/MM/YYY) 但我无法用excel的基本日期格式解决它。 有任何想法吗 ? 最佳答案 您可以使用 MATCH
我有一个 Excel,其中每个月都会创建一个名为 kpi_monthname 的工作表,其中月份名称包含该月的前 3 个字符。就像 5 月一样,它显示为 kpi_mai 或 4 月它显示为 kpi_a
我想知道,如果这样 alph = ['a'..'z'] 返回我 "abcdefghijklmnopqrstuvwxyz" 那我怎样才能返回法语字母呢?我可以通过某种方式传递语言环境吗? 更新:嗯)我知
法语含糊的语言问题。我正在建立一个有 5 种语言的网站。我已经使用 PHP 设置了法语等语言文件 $lang['Description'] = 'Photos'; $lang['cookie']= "
Popup Click me to toggle the popup! A Simple Popup! // When the user clicks on div, open the po
所以我正在为我目前工作的法国客户做一个网站,我正在为网站使用来自 Google Fonts 的名为 Comfortaa 的字体。该网站是法语的,因此使用带有重音符号的字母,例如 é à 和 è 然而,
我在一个网站上实现了一个语言插件,你知道排序点击并将所有内容更改为阿拉伯语、俄语..等(我知道现代浏览器已经为此内置了功能,但我们选择了去这样。) 我一直在徘徊的是,如果我们的正常网站正在运行,我们如
我开发了一个短信发送器应用程序,我想知道用户使用的语言。那么,当用户键入一条消息时,我如何知道他/她使用的语言? 最佳答案 通过使用获取输入类型管理器: InputMethodManager imm
我有如下一段代码 public static void main(String[] args) throws UnsupportedEncodingException { System
我想验证任何给定格式的日期格式。例如。法语:14-déc-2017。在普通英语中,14-Dec-2017 采用 %d-%b-%Y 格式。我想要的是任何语言格式的给定日期都应该得到验证。 在Python
我正在尝试初始化FrenchStemmer: stemmer = nltk.stem.FrenchStemmer('french') 错误是: AttributeError: 'module' obj
这个问题已经有答案了: Microsoft Excel mangles Diacritics in .csv files? (22 个回答) 已关闭 3 年前。 我正在尝试生成不同语言的报告,例如法语
我有一个旧的 SQL4 数据库,我正在尝试将其重新上传到我们在 Phpmyadmin 上新创建的数据库。表中的字符是拉丁文和日文。我尝试更改这些特定列,但结果仍然是我需要以日语显示的列的损坏字符。 这
我有一个日期字符串,我想将其解析为日期时间对象。我有这个: $invoice = '9 février 2017' [datetime]::parseexact($invoice, 'dd MMMM
我只是想知道在网页上处理多种语言的最佳方法是什么?我应该在负载中创建一个事件,将所有控件的标签更改为适当的语言文本,还是有更好的方法?我正在使用.NET框架,谢谢。 最佳答案 对于 ASP.NET,请
我应该如何在一个供全局使用的网站上存储(和展示)多种语言的文本?内容主要是 500 多字文章的形式,尽管我还需要翻译每一页上的小段文字(例如“打印这篇文章”或“返回菜单”)。 我知道有几个 CMS 包
晚上好! 我在瑞典 Mac 上开发了一个英文宏。该宏在法国使用的带有法语 Excel 的 Mac 上运行。所有的子程序都工作得很好……但只有一个。我使用了公式“=VALUTA(123,4567)”[瑞
我是一名优秀的程序员,十分优秀!