我有一个屏幕,用户可以看到英文单词并键入任何语言的等效翻译。即使将charset和collation更改为utf8后,也不能将中文,俄文等字符存储到mysql表中
我的数据库创建查询:
CREATE DATABASE IF NOT EXISTS lang_db
DEFAULT CHARACTER SET utf8
DEFAULT COLLATE utf8_general_ci;
我的表的创建语句:
CREATE TABLE lang_map (
WORD VARCHAR(2048) NULL,
DESCRIPTION VARCHAR(2048) NULL
) CHARACTER SET utf8 COLLATE utf8_general_ci;
我得到的JSON字和说明,我在java中读取,然后触发一个查询插入到表。但对于像中文或俄文这样的语言,只有插入的东西是?
's。
MySQL版本:5.5 的Java:1.6
更新: Java代码:
控制器处理Ajax调用。
@ResponseBody
public setChanges(@RequestBody JSONObject keyValueMap) throws Exception {
return myService.setChanges(keyValueMap);
}
服务代码
List<LangMapping> langMappings = new ArrayList<LangMapping>();
for(Object keyObject : changedKeyValueMap.keySet()){
String key = String.valueOf(keyObject) ;
String description = (String) changedKeyValueMap.get(key);
langMappings.add(buildLangMapping(key,localeCode,description)); //pojo
}
//using above array list i am inserting into database table
如何在字符的java读?我想你也应该展示java代码。 – Alex
我直接将接收到的字符串插入到数据库表中,但那不是问题,即使当我插入表时,manualy问号只会插入,而不是重音字符。 – ppmakeitcount
这听起来像你的_connection_不是“UTF-8”。查看[_this_]中的“问号”(https://stackoverflow.com/questions/38363566/trouble-with-utf-8-characters-what-i-see-is-not-what-i-stored)了解更多信息调试。 –