sql命令中的数据库编码

sql命令中的数据库编码,sql,database,unicode,encoding,character-encoding,Sql,Database,Unicode,Encoding,Character Encoding,我想知道哪个实体负责完成成功完成SQL命令所需的编码转换。例如:您有几个地方可以输出SQL命令 SELECT title from T1 where title='título' 这可能是从数据库客户机内部执行的(我假设它读取数据库编码,然后对其命令进行编码),但如果这是编程语言中的字符串,其字符串编码与数据库不同,会发生什么情况 转换发生在哪里?在连接到数据库的类中?数据库和连接器在握手时是否达成某种协议 我会喜欢一些关于这个主题的信息或者一些我可以阅读的链接 提前感谢。CaseJava+M

我想知道哪个实体负责完成成功完成SQL命令所需的编码转换。例如:您有几个地方可以输出SQL命令

SELECT title from T1 where title='título'
这可能是从数据库客户机内部执行的(我假设它读取数据库编码,然后对其命令进行编码),但如果这是编程语言中的字符串,其字符串编码与数据库不同,会发生什么情况

转换发生在哪里?在连接到数据库的类中?数据库和连接器在握手时是否达成某种协议

我会喜欢一些关于这个主题的信息或者一些我可以阅读的链接

提前感谢。

CaseJava+MySQL

  • Java字符串的内部是Unicode编码的文本
  • 在Java中,源文本的编码应该与Java编译器使用的编码相同。编辑器和编译器之间的错误匹配会弄乱字符串文本
  • 因此,Java将Unicode字符串传输到JDBC驱动程序,即数据库客户端库
  • MySQL连接字符串可以指示在客户端库中使用哪种编码与数据库服务器通信
    useEncoding=UTF-8
    ,因此Unicode将是一个很好的国际选择
  • 数据库可以设置默认编码
  • 和任何桌子一样
  • 同样根据专栏(印地语一篇,中文一篇)

除了编码之外,排序规则(字符串的排序顺序)也是特定于语言和编码的。因此,基本上,处理连接的实体是需要同步双方(数据库和源)的实体。如果在连接中强制执行特定的编码,那么数据库引擎将不得不将连接中的字节转换为数据库编码?mysql客户端库(JDB“驱动程序”)的选项太多了。Java总是传递字符串。非Java MySQL服务器也应该接受Unicode。特定编码中的传输意味着Java中客户端驱动程序的转换。