java String.Format("%02d") 产生奇怪的 unicode 字符
java String.Format("%02d") produces strange unicode characters
我正在这样做:
int level = ...;//some value from game
Analytics.newDesignEvent(String.format("level_end:%02d:win", level));
而且我发现某些设备发送带有 unicode 符号的字符串,例如“٠١”:
level_end:٠١:win
我已尝试在我的环境中重现它,但 String.format 对任何整数值都能正常工作。
这可能是由特定语言环境引起的吗?为什么会发生这种情况?
更新2:
我没有找到任何信息是否为 string + int/float/etc。连接也考虑了语言环境。 smbd 碰巧知道吗?
在 java 文档中说:
Number localization. Some conversions use localized decimal digits
rather than the usual ASCII digits. So formatting 123 with %d will
give 123 in English locales but ١٢٣ in appropriate Arabic locales, for
example. This number localization occurs for the decimal integer
conversion %d, the floating point conversions %e, %f, and %g, and all
date/time %t or %T conversions, but no other conversions.
顺便说一下,٠١ 在阿拉伯数字中的意思是 01。所以我会把我的电话换成
String.format(Locale.US, "level_end:%02d:win", level)
看看有没有帮助。
我正在这样做:
int level = ...;//some value from game
Analytics.newDesignEvent(String.format("level_end:%02d:win", level));
而且我发现某些设备发送带有 unicode 符号的字符串,例如“٠١”:
level_end:٠١:win
我已尝试在我的环境中重现它,但 String.format 对任何整数值都能正常工作。 这可能是由特定语言环境引起的吗?为什么会发生这种情况?
更新2: 我没有找到任何信息是否为 string + int/float/etc。连接也考虑了语言环境。 smbd 碰巧知道吗?
在 java 文档中说:
Number localization. Some conversions use localized decimal digits rather than the usual ASCII digits. So formatting 123 with %d will give 123 in English locales but ١٢٣ in appropriate Arabic locales, for example. This number localization occurs for the decimal integer conversion %d, the floating point conversions %e, %f, and %g, and all date/time %t or %T conversions, but no other conversions.
顺便说一下,٠١ 在阿拉伯数字中的意思是 01。所以我会把我的电话换成
String.format(Locale.US, "level_end:%02d:win", level)
看看有没有帮助。