文本编码在游戏中转换垃圾字符!1.2.4框架

svujldwt  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(338)

问题:游戏中的字符编码!1.2.4框架。
上下文:我们正在尝试存储文本“《我叫mt公司繁體版》台港澳專屬伺服器上線!" 从输入文本字段到mysql使用播放!1.2.4框架。
我们遵循的步骤:
1) 获取用户输入的ui。任何语言文字,所以我们试了日语字符。注:页面设置为utf-8字符编码。
2) 投稿后玩!控制器,控制器只是读取输入并使用play存储它!模型。下面提到的片段,

public static void text_create() throws UnsupportedEncodingException,
        ParseException {
    System.out.println("params :: text string value :: "    + params.get("text"));

    String oldString = params.get("text");

    // Converting the input string(which is UTF-8 format) and parsing to Windown-1252
    String newString = new String(oldString.getBytes(), "WINDOWS-1252");        

    // 1. passing encoded text to mysql. 
    // 2. TextCheck table and the column 'text' has encoding and collation format as UTF-8.
    // 3. TextCheck > text column mentioned as String in model.
    TextCheck a = new TextCheck(newString);

    List<Object> text = TextCheck.TextList();
    render(a,text);
}

它将文本值存储为“〚我å�«mt公司ç¹�體版》å�°æ¸¯æ¾³å°ˆå±¬ä¼ºæœ�器业線ï¼�"
问题是有性格� 介于两者之间。当我使用java、ruby或其他语言等其他平台从mysql读取这些原始数据时,它会进行转换,但会使� 字符是垃圾。只是垃圾。
注:有趣的是,当我读它从同一个发挥!框架。即使垃圾字读对了,看起来也很好。
问:为什么是那些垃圾角色?

8fq7wneg

8fq7wneg1#

问题如下:

String newString = new String(oldString.getBytes(), "WINDOWS-1252");

这在我看来像是胡说八道。java使用utf-16在内部存储所有字符串,因此您不能用这里尝试的方式调整java字符串的编码。
这个 getBytes() 方法返回使用默认平台编码的字符串字节。然后使用(可能)不同的字符集将这些字节转换成一个新字符串。结果几乎肯定会被打破。

相关问题