数据库会出现乱码吗?你用String转码与数据库一致看看。

解决方案 »

  1.   

    亚控只告诉了说 用的是unicode 编码。  我该如何转?
      

  2.   

    亚控只告诉了说 用的是unicode 编码。  我该如何转?
      

  3.   

    没具体说明吗,unicode 还有utf8,utf16等等
      

  4.   

    理论上,对方用的unicode
    只要在传输过程中,未再做任何的转码。
    你接收后,可以使用string再重新编码一次还原回来的。这个理论上就好比是网页的东西,你通过网络访问以后,再转码回来。。
      

  5.   

    没有。。他就告诉我。他们都是通过 unicode方式连接的。 我就郁闷了
      

  6.   

    既然它原来是 unicode,而你看到的是乱码就很可能是驱动程序按照操作系统默认的 GBK 去理解对方提供的 byte [ ],内部就像是有这么一个过程:
         byte[] bytes = // 从 socket 或文件中读取。
         String field = new String(bytes); // 这句相当于 new String(bytes, System.getProperty("file.encoding"));     // 如果原来它是 UTF8 或其它编码方式编码的 byte [],那这个时候就是乱码。
          // 所以我们需要给驱动程序说明它应该使用某个字符集而不使用操作系统默认的。     这个文章
          How driver manager converts between Unicode and ANSI 
         中提到:
         The only "working" solution i could figure out is to implement both
    wide and ansi APIs and the user must specify which one internally
    should be used and for the anis API, a character set must be specified.
    For example the configuration string for my library could be
    something like   "engine=odbc;odbcapi=ansi;charset=utf8;DSN=mysource"or   "engine=odbc;odbcapi=unicode;DSN=mysource"So if the user really needs to load a odbc 2.0 driver which only
    returns iso-850 chars, he can configure my lib this way (extreme
    example).I don't see any other chance to provide working odbc support.   但还是不知道怎么在写 JDBC 连接的 URL 中这样指定参数,它这个 ODBC 连接串不像是 JDBC 能识别的(?我也不确定,常见的 JDBC-ODBC URL 不是这么写的啊)
      

  7.   

    搜索了一下,得到这个,我们不能直接在 JDBC URL 中给,但可以另外传递一个 Properties 参数给 DriverManager.getConnection(url, properties);如果你使用的是数据源连接池而不是 DriverManager,我们同样需要传递这个 charSet 名字的参数。样例介绍:
    http://www.cs.lafayette.edu/docs/java/guide/jdbc/bridge.html 
      

  8.   


    "engine=odbc;odbcapi=ansi;charset=utf8;DSN=mysource"
    这种写法可能是 M$ 编程中的 OLEDB 之类的,反正不是 Java。
      

  9.   

    ODBC 桥连接现在已经废弃了,没人用了,建议还是用jdbc
      

  10.   


    我也不想odbc ,没办法。这个数据库不支持jdbc所以。。