简体   繁体   English

使用Hibernate将MySQL latin1_bin转换为utf-8

[英]Convert MySQL latin1_bin with Hibernate to utf-8

I have a MySQL DB (READ-ONLY, NO DB CHANGES) with many varchar fields encoding in latin1_bin. 我有一个MySQL DB(只读,无数据库更改),其中许多varchar字段都编码为latin1_bin。 I can not change any DB structure or create any view. 我无法更改任何数据库结构或创建任何视图。 I get access to this fields with Hibernate. 我可以通过Hibernate访问此字段。 How can I set the hibernate converting to UTF-8?? 如何将休眠模式转换为UTF-8?

<property name="hibernate.connection.characterEncoding">UTF-8</property> 

this don't work. 这不起作用。

I don't want to convert any field directly in my application, because that are so much String fields. 我不想直接在我的应用程序中转换任何字段,因为那是很多String字段。

Thanks for your Answers! 感谢您的回答!

You can manually change your latin1_bin String to utf-8 String.See sample; 您可以手动将latin1_bin字符串更改为utf-8字符串。

public class StringHelper {
    public static String convertToUTF8(String s) {
        String out = null;
        try {
            out = new String(s.getBytes("ISO-8859-1"), "UTF-8");
        } catch (java.io.UnsupportedEncodingException e) {
            return null;
        }
        return out;
    }

    public static void main(String[] args) {
        String latinString = "héllo";//just sample not sure real latin string or not.
        String utf8String = StringHelper.convertToUTF8(latinString);
        System.out.println(utf8String);

    }

}

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

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