|
|
1
11
您使用包含土耳其字符的Unicode字符串,并使用默认编码将其转换为字节(使用默认编码通常是错误的)。然后将这些字节解码回字符串,再次使用默认编码。结果是您什么也没有得到(除了丢失任何不适合默认编码的字符);您是否已将字符串放入编码/解码周期已确定
以下是什么
编码为UTF-8,然后使用默认编码进行解码。在Mac上,默认编码是UTF-8,因此这不起任何作用。在Windows上,默认编码永远不是UTF-8,因此结果是错误的字符。
要使用与默认编码不同的编码将字符串写入标准输出,您需要创建一个类似
但是,在本例中,控制台似乎使用的是Windows代码页1252西欧(+1 ATorres)。这里根本没有编码不匹配的问题,所以您无法通过重新编码字符串来解决它!
默认编码cp1252与控制台的编码匹配,只是cp1252不包含土耳其语字符
不幸的是,没有Windows区域设置使用UTF-8作为默认代码页。使用stdio流函数将非ASCII输出放到控制台上并不是一件真正可靠的事情。有一个Win32 API可以直接将Unicode写入控制台,但不幸的是,没有什么东西使用它。 |
|
|
2
6
我还建议 任何一个 限制源代码使用ASCII(和\uxxx编码非ASCII字符) 或 编译时显式指定字符编码。 现在,你想解决什么更大的问题? |
|
|
3
2
您可能正在处理不同的默认编码设置。
对
或者,您可能只是看到了这样一个事实,即Mac终端窗口在UTF-8中工作,而Windows DOS盒在UTF-8中工作 不
最后,也是按照Skeet先生的说法,永远不要调用零参数getBytes()。 |
|
|
4
0
|