Java 在为iOS编译的libGDX项目中使用斯堪的纳维亚字母

Java 在为iOS编译的libGDX项目中使用斯堪的纳维亚字母,java,ios,character-encoding,libgdx,xamarin,Java,Ios,Character Encoding,Libgdx,Xamarin,我制作了一个libGDX游戏,应该可以在Android和iOS上运行。游戏本身在两个平台上的工作原理完全相同,但由于某些原因,iOS上的字符编码已关闭 我正在创建这样一个标签: Label info = new Label("Scandinavian letters: 'æøåÆØÅ'", labelStyle); 这在Android上可以正常工作;字体包含所需的字符,所有内容都会显示在屏幕上 然而,在iOS上,斯堪的纳维亚字母消失了(取而代之的是显示“斯堪的纳维亚字母:”) 我怀疑这与文件编

我制作了一个libGDX游戏,应该可以在Android和iOS上运行。游戏本身在两个平台上的工作原理完全相同,但由于某些原因,iOS上的字符编码已关闭

我正在创建这样一个标签:

Label info = new Label("Scandinavian letters: 'æøåÆØÅ'", labelStyle);
这在Android上可以正常工作;字体包含所需的字符,所有内容都会显示在屏幕上

然而,在iOS上,斯堪的纳维亚字母消失了(取而代之的是显示“斯堪的纳维亚字母:”)

我怀疑这与文件编码有关,但我不知道我需要检查哪些文件,或者Xamarin中是否有这样的设置

我知道我的Java文件在到iOS的过程中经过了很多转换(据我所知,Java=>C#=>Mono=>Native),所以我如何才能找到在这个过程中我需要在哪里更改编码,以及如何更改编码


或者,我想这可以通过在我需要写“å”的每个地方使用“(char)229”来解决,但这有点混乱,不是吗?

我假设在将Java代码转换为单二进制文件的过程中,由于编码问题,这些字母消失了

我目前的解决方案非常难看,但它确实有效。因此,如果其他人也有同样的问题,这是我的临时解决方案:

public class Letters {

    public static char aa = (char)229;
    public static char ae = (char)230;
    public static char oe = (char)248;

    public static char AA = (char)197;
    public static char AE = (char)198;
    public static char OE = (char)216;

}
然后我可以写:

String text = "Gr" + Letters.oe + "t ombord i en fl" + Letters.aa + "te.";

我假设这些字母消失是因为在将Java代码转换为Mono二进制文件的过程中存在编码问题

我目前的解决方案非常难看,但它确实有效。因此,如果其他人也有同样的问题,这是我的临时解决方案:

public class Letters {

    public static char aa = (char)229;
    public static char ae = (char)230;
    public static char oe = (char)248;

    public static char AA = (char)197;
    public static char AE = (char)198;
    public static char OE = (char)216;

}
然后我可以写:

String text = "Gr" + Letters.oe + "t ombord i en fl" + Letters.aa + "te.";

您是在脱机还是在运行时创建字体位图?脱机。当使用(char)229时,“å”按其应有的方式显示。所以我很确定这与Java文件的编码有关,或者与编译过程中(有些复杂)的一些中间文件有关。我在我的Java文件上尝试了几种不同的编码,但都没有成功,所以我认为是后者。如果记录值或写入字符串字节内容,也许你可以找出它们开始转换为什么字符集?(假设chars没有丢失?)这是个好主意。我试过了,看起来他们在那里。我将字符打印在字符串“abcæå”中,得到了以下内容:97、98、99、202、175、194。在Windows和Android上,我得到的是97、98、99、230、248、229。很快,这并没有告诉我任何事情,但我将尝试探索不同的字符集,以了解会发生什么。如果这里有人知道,请告诉我!您是在脱机还是在运行时创建字体位图?脱机。当使用(char)229时,“å”按其应有的方式显示。所以我很确定这与Java文件的编码有关,或者与编译过程中(有些复杂)的一些中间文件有关。我在我的Java文件上尝试了几种不同的编码,但都没有成功,所以我认为是后者。如果记录值或写入字符串字节内容,也许你可以找出它们开始转换为什么字符集?(假设chars没有丢失?)这是个好主意。我试过了,看起来他们在那里。我将字符打印在字符串“abcæå”中,得到了以下内容:97、98、99、202、175、194。在Windows和Android上,我得到的是97、98、99、230、248、229。很快,这并没有告诉我任何事情,但我将尝试探索不同的字符集,以了解会发生什么。如果这里有人知道,请告诉我!