如何以编程方式正确设置JVM(1.5.x)使用的默认字符编码?
我已经读过-Dfile.encoding=whatever以前用于旧JVM的方法......由于我不会进入的原因,我没有那么奢侈.
我试过了:
System.setProperty("file.encoding", "UTF-8");
Run Code Online (Sandbox Code Playgroud)
并且属性已设置,但它似乎不会导致下面的最终getBytes调用使用UTF8:
System.setProperty("file.encoding", "UTF-8");
byte inbytes[] = new byte[1024];
FileInputStream fis = new FileInputStream("response.txt");
fis.read(inbytes);
FileOutputStream fos = new FileOutputStream("response-2.txt");
String in = new String(inbytes, "UTF8");
fos.write(in.getBytes());
Run Code Online (Sandbox Code Playgroud) 我试图在Mac OS X 10.6上正确渲染Devanagari连字(在Unicode字符串中).
字符串在a上绘制JComponent并RenderingHints用于抗锯齿.连字在Windows XP SP2和7以及Ubuntu中正确显示,但在Mac OS X中,连字被分解(或者更确切地说,没有正确合并),变音符被移离其位置等等(参见下面的截图,正确的渲染示例来自左侧的Win XP SP2(使用RenderingHintsAntialiasing键ON),右侧的Mac OS X 10.6.7中的错误渲染示例(Antialising DEFAULT= OFF).
我已将字体设置如下,因此它应该在任何系统上使用默认字体:
new Font(null,Font.PLAIN,20);
Run Code Online (Sandbox Code Playgroud)
我相信所有这些可能与Macs上的默认字符编码是MacRoman(不是UTF-8子集)以及其他系统(如Windows)使用UTF-8子集(例如WinLatin-1)这一事实有关. )或cp1252等.
即使掌握了这些信息,我也不知道如何处理这个问题.因此,如果有人能指出我正确的方向,我将非常感激.

我已经尝试了很多东西:
TextAttribute LIGATURES_ON 没有解决问题我非常感谢任何提示或其他开发人员的代码片段(最好是在Mac上开发的印地语背景).