java中国际化处理

347

国际化相关处理方案

  • 集合排序(按照英文,日文,韩文方式排序)
Collections.sort(Data, new Comparator<JSONObject>()
			{
				@Override public int compare(JSONObject o1, JSONObject o2)
				{
					try
					{
						Comparator<Object> com = Collator.getInstance(java.util.Locale.ENGLISH);
						if (sysLocale.getId() == KO_LOCALE_ID)
						{
							com = Collator.getInstance(java.util.Locale.KOREA);
						}
						if (sysLocale.getId() == JA_LOCALE_ID)
						{
							com = Collator.getInstance(java.util.Locale.JAPAN);
						}
						return com.compare(o1.getString(KeyPet.PINYIN_NAME),o2.getString(KeyPet.PINYIN_NAME));
					}catch (JSONException e)
					{
						e.printStackTrace();
					}
					return 0;
				}
			});
  • 时间处理(全部采用unix时间戳精确至秒或者是毫秒) 原因如下
  1. 时间序列化后容易被js或者其他语言处理,不需要根据任何格式来转换,容易出异常。java和js构造都包含unix时间戳入参来构造,然后转为自己所需要的格式,在逻辑层可以通过不同的时区进行转换。
  2. mysql中的时间戳单位是有时间限制的,如果存为长整形的unix时间戳将不会出现时间限制
  3. 极度不推荐使用yyyy-MM-dd等格式json序列化的方式直接放置在json报文当中,每次js或者java处理时,首先得转为时间,其次再转为自己想要的字符串格式,造成性能浪费以及异常抛出,并且不包含时区等信息。