正确显示特殊字符

时间:2015-08-18 12:23:06

标签: android encoding

我遇到了问题,我无法在我的应用中显示像'ß,ö,ä,ü'这样的特殊字符。

结果是这样的: enter image description here

或者像这样:

enter image description here

Android Studio我没有收到任何错误或警告,我正在使用windows-1251编码。

在gradle中我添加了这一行:compileOptions.encoding = 'windows-1251'

它应该是德语编码。

如何解决这个问题?

我实际上可以使用Html.fromHtml( unicode of the special character) Html.fromHtml ( "&#223" )预定义的字符串更改“ß”等特殊字符,如 String neuer_String = get_street_adress.replace ( "ß", Html.fromHtml ( "&#223" ) ) ; straße.setText ( "Stra" + Html.fromHtml ( "&#223" ) + "e: " + neuer_String);

但是如果非预定义的String包含特殊字符会怎么样?我试图简单地替换像这样的特殊字符:

Typeface

但这不起作用,因为例如字符串FriedhofstraÃe应该是Friedhofstraße。所以字符串中没有字符'ß'。

我还尝试使用show processes from all users更改字体,但抛出异常:“无法创建本机字体”

3 个答案:

答案 0 :(得分:1)

这可能是设备中字体的原因。 你可以解决这个问题的方法是用你测试过的工作字体编写一个字体(例如Word等)

Typeface typeface = Typeface.createFromAsset(getAssets(), "fonts/theNameOfTheFont.ttf");

请记住将代码放在资源中的fonts文件夹中。如果您没有,请创建它。

使用UTF-8编码“可能”解决您的问题。

来自伊朗的欢呼声

加布里埃尔

答案 1 :(得分:1)

强烈建议使用UTF-8编码。

使用UTF-8编码,您可以轻松地在string.xml中使用unicode值。 这里是a Link to XML character Entities List

例如,使用<string name="text szlig">text &#223;</string>

的Aurelien

答案 2 :(得分:1)

转到Android Studio的设置。在“文件编码”选项卡中,将所有内容都格式化为UTF-8。

如果问题仍然存在,则问题出在您使用的字体中,因为它可能不支持特殊字符。

希望它有所帮助。

修改

我找到了解决问题的方法,请查看:

您可以在strings.xml中使用特殊字符保存所有字符串,如:

<resources>

    <string name="street">Straße</string>

</resources>

然后用以下代码检索它们:

String street = getResources().getString(R.string.street);

你绝对可以尝试其他德国人物。希望对你有用!