繁体   English   中英

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

[英]Text encoding converts junk character in Play! 1.2.4 framework

问题: Play中的字符编码! 1.2.4框架成为。

上下文:我们正在尝试使用Play将文本“《我叫MT繁体版》台港澳专属伺服器上线!”存储在mysql中。 1.2.4框架。

我们遵循的步骤:

1)从用户那里获取输入的UI。 lang语言文字,所以我们尝试了Japneese Char。 注意:页面设置为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);
}

它以TEXT值的形式存储为“ã€ææˆ'å。«MTç¹Ã體版》åæ°æ¸¯æ¾³å°ˆå±¬ä¼ºæœå™¨ä¸Šç·šï¼。”

问题在于值之间存在字符。 当我使用java,ruby或其他语言从其他平台从mysql读取原始数据时,它会转换但会将那些字符变成垃圾。 只是垃圾

注意:有趣的是,当我从同一个Play中阅读它时! 框架。 即使正确读取了垃圾字符,看起来也很好。

问题:为什么那些垃圾字符?

问题是以下行:

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

对我来说这似乎是胡说八道。 Java使用UTF-16在内部存储所有字符串,因此您无法以此处尝试的方式调整Java字符串的编码。

getBytes()方法使用默认平台编码返回字符串的字节。 然后,您可以使用(可能)不同的字符集将这些字节转换为新的字符串。 结果几乎可以肯定会被打破。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM