不能 post 以英文设备语言向网络服务器发送“İ”信件
Can't post "İ" letter to web server in English device language
在我的项目中,应该 post 土耳其国家名称 "TÜRKİYE" 与 Web 服务器的大写字母。但是当我将设备语言更改为英语时它不起作用。因为它 post "TÜRKIYE"。大写 I。我必须修复它,它应该 post "İ"。我该怎么做?
String from1 = textV_fromCity_ac_search.getText().toString();
String to1 = textV_toCity_ac_search.getText().toString();
if (isValidData() && isValidDate() && hasSessionId()) {
Intent intent = new Intent(SearchActivity.this, ResultActivity.class);
intent.putExtra("SessionId", User.getInstance().getSessionId());
intent.putExtra("PassengerNumber", textV_passenger_number.getText().toString());
String[] dataX = getResources().getStringArray(R.array.cities);
for (String aDataX : dataX) {
if (aDataX.equals(textV_fromCity_ac_search.getText().toString() + " (Türkiye)")) {
from1 = aDataX;
} else if (aDataX.equals(textV_toCity_ac_search.getText().toString() + " (Türkiye)")) {
to1 = aDataX;
}
}
intent.putExtra(MyConstants.BUNDLE_FROM, from1);
intent.putExtra(MyConstants.BUNDLE_TO, to1);
intent.putExtra(MyConstants.BUNDLE_ISDOMESTIC, from1.toUpperCase().contains("TÜRKİYE") && to1.toUpperCase().contains("TÜRKİYE"));
startActivity(intent);
}
您可以使用 Locale
大写 String
。默认情况下,toUpperCase
方法使用系统默认的 Locale
。但是您可以通过 locale
参数更改它。
String uppercased = "Türkiye".toUpperCase(new Locale("tr","TR"));
编辑: 好的,我正在编辑一个答案以清除问题。
您可能还想看看 "The Turkey Test":What is The Turkey Test?
从 i18n 的角度来看,土耳其语的本地化与其他语言环境有很大不同。
例如,对于后者:
Lowercase I -> ı
Uppercase i -> İ
在Java中,默认语言环境由系统提供。但就您而言,您想明确使用土耳其语言环境。如果您想将字符串 "Türkiye" 大写为 "TÜRKİYE" 而不管系统语言,您应该提供土耳其语区域设置显式。
为了实现这一点,您需要使用 String#toUpperCase(Locale)
方法而不是使用 String#toUpperCase()
方法。
在我的项目中,应该 post 土耳其国家名称 "TÜRKİYE" 与 Web 服务器的大写字母。但是当我将设备语言更改为英语时它不起作用。因为它 post "TÜRKIYE"。大写 I。我必须修复它,它应该 post "İ"。我该怎么做?
String from1 = textV_fromCity_ac_search.getText().toString();
String to1 = textV_toCity_ac_search.getText().toString();
if (isValidData() && isValidDate() && hasSessionId()) {
Intent intent = new Intent(SearchActivity.this, ResultActivity.class);
intent.putExtra("SessionId", User.getInstance().getSessionId());
intent.putExtra("PassengerNumber", textV_passenger_number.getText().toString());
String[] dataX = getResources().getStringArray(R.array.cities);
for (String aDataX : dataX) {
if (aDataX.equals(textV_fromCity_ac_search.getText().toString() + " (Türkiye)")) {
from1 = aDataX;
} else if (aDataX.equals(textV_toCity_ac_search.getText().toString() + " (Türkiye)")) {
to1 = aDataX;
}
}
intent.putExtra(MyConstants.BUNDLE_FROM, from1);
intent.putExtra(MyConstants.BUNDLE_TO, to1);
intent.putExtra(MyConstants.BUNDLE_ISDOMESTIC, from1.toUpperCase().contains("TÜRKİYE") && to1.toUpperCase().contains("TÜRKİYE"));
startActivity(intent);
}
您可以使用 Locale
大写 String
。默认情况下,toUpperCase
方法使用系统默认的 Locale
。但是您可以通过 locale
参数更改它。
String uppercased = "Türkiye".toUpperCase(new Locale("tr","TR"));
编辑: 好的,我正在编辑一个答案以清除问题。
您可能还想看看 "The Turkey Test":What is The Turkey Test?
从 i18n 的角度来看,土耳其语的本地化与其他语言环境有很大不同。
例如,对于后者:
Lowercase I -> ı
Uppercase i -> İ
在Java中,默认语言环境由系统提供。但就您而言,您想明确使用土耳其语言环境。如果您想将字符串 "Türkiye" 大写为 "TÜRKİYE" 而不管系统语言,您应该提供土耳其语区域设置显式。
为了实现这一点,您需要使用 String#toUpperCase(Locale)
方法而不是使用 String#toUpperCase()
方法。