默认的JDBC字符编码是什么?

3

我正在开发一个Coldfusion应用程序,发现无法将某些字符插入数据库。我相信可以更改JDBC连接字符串以启用Unicode编码。

但是,我想知道JDBC使用的默认编码是什么,以便我可以确认当前可以安全使用哪个字符集。我似乎找不到任何有关默认值的信息。有人知道默认值吗?

编辑:

事实上,数据库已经准备好使用Unicode(我可以直接在MySQL客户端中使用SQL插入Unicode字符而没有任何问题),但如果我尝试从Coldfusion插入数据,则似乎无法处理Unicode字符,因此它似乎使用的默认连接字符串(我们还没有指定)不兼容Unicode。

2个回答

1

MySQL默认编码是latin1

对于使用默认MySQL字符集和排序规则(latin1,latin1_swedish_ci)存储数据的应用程序


这就是了 - 我通过Coldfusion运行了SHOW VARIABLES,并显示character_set_connection和character_set_client为latin1。 - dVyper

0

我的ColdFusion笔记说

<cfprocessingdirective pageEncoding="utf-8">

<cffile
action="read"
file="#settings.csvfile#"
variable="autodata"
charset="utf-8">

同时,在需要的任何列上建立CHARACTER SET utf8mb4

(坚持使用非常有限的latin1似乎是愚蠢的,因为未来显然是UTF-8。)


1
是因为它“错误”吗?还是“没有帮助”?或者其他原因? - Rick James
我认为你的回答很好。它涵盖了具体的问题,并提出了一个大局关注点。在撰写本文时,UTF-8正变得越来越常用,但它还不是普遍适用的。 - James A Mohler
虽然数据库已经准备好支持Unicode(我可以直接使用MySQL客户端插入Unicode字符,没有任何问题),但如果我尝试从Coldfusion插入数据,它似乎无法处理Unicode字符,因此似乎它使用的默认连接字符串(我们还没有指定)不兼容Unicode。 - dVyper
@dVyper - 给我们展示一下CF配置,连接到MySQL时使用的参数,SHOW CREATE TABLE,CF中一些非ASCII字符的十六进制转储,以及将其INSERT到数据库后的十六进制转储。其中之一可能有助于找出破坏Unicode的问题。(我希望你指的是utf8,而不是“unicode代码点”。) - Rick James

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接