如何使用Lucee将UTF-8数据插入MySQL?

如何使用Lucee将UTF-8数据插入MySQL?,mysql,utf-8,coldfusion,utf8mb4,lucee,Mysql,Utf 8,Coldfusion,Utf8mb4,Lucee,我试图使用Lucee将UTF-8字符插入MySQL表,但运气不好 我将MySQL表设置为使用utf8mb4\uUnicode\uCI,但也尝试了utf8mb4\uBin 我尝试过Apache,启用和未启用“AddDefaultCharset UTF-8” 数据库的连接字符串包括“characterEncoding=UTF-8” Lucee配置在字符集设置中包括UTF-8 我正在运行的代码如下所示 <cfset textValue = 'That 4-byte Emoji needs M

我试图使用Lucee将UTF-8字符插入MySQL表,但运气不好

  • 我将MySQL表设置为使用utf8mb4\uUnicode\uCI,但也尝试了utf8mb4\uBin
  • 我尝试过Apache,启用和未启用“AddDefaultCharset UTF-8”
  • 数据库的连接字符串包括“characterEncoding=UTF-8”
  • Lucee配置在字符集设置中包括UTF-8
我正在运行的代码如下所示

<cfset textValue = 'That 4-byte Emoji needs MySQL's 
utf8mb4
;
utf8
will not do. To the outside world,
utf8mb4
is called
UTF-8
(with a dash)`.

The column in the table needs to say
CHARACTER SET utf8mb4
and the connection needs to say it also:

Add
?useUnicode=yes&characterEncoding=UTF-8
to the JDBC URL

<%@ page language="java" pageEncoding="UTF-8"%>
<%@ page contentType="text/html;charset=UTF-8" %>

compileJava.options.encoding = 'UTF-8'

<form method="post" action="/your/url/" accept-charset="UTF-8">

4字节表情符号需要MySQL的
utf8mb4
<代码>utf8
不起作用。对于外界来说,
utf8mb4
被称为
UTF-8
(带破折号)`

表中的列需要显示
字符集utf8mb4
,连接也需要显示:

向JDBC URL添加
?useUnicode=yes&characterEncoding=UTF-8


compileJava.options.encoding='UTF-8'

要将4字节UTF8与连接器/J一起使用,请使用
character\u set\u server=utf8mb4
配置MySQL服务器。只要未在连接字符串中设置characterEncoding,连接器/J就会使用该设置。这相当于自动检测字符集。

4字节表情符号需要MySQL的
utf8mb4
<代码>utf8
不起作用。对于外界来说,
utf8mb4
被称为
UTF-8
(带破折号)`

表中的列需要显示
字符集utf8mb4
,连接也需要显示:

向JDBC URL添加
?useUnicode=yes&characterEncoding=UTF-8


compileJava.options.encoding='UTF-8'

要将4字节UTF8与连接器/J一起使用,请使用
character\u set\u server=utf8mb4
配置MySQL服务器。只要未在连接字符串中设置characterEncoding,连接器/J就会使用该设置。这相当于自动检测字符集。

好的,需要更多的帮助和阅读,我需要在MySQL配置文件“/etc/MySQL/my.conf”中添加“character\u set\u server=utf8mb4”。看起来这是由旧版本的连接器引起的问题

从MySQL文档(感谢CFSimply引导我进入页面)

对于连接器/J 8.0.12及更早版本:为了使用utf8mb4字符集进行连接,服务器必须配置字符集\u server=utf8mb4;如果不是这样,当UTF-8用于连接字符串中的字符编码时,它将映射到MySQL字符集名称utf8,这是utf8mb3的别名


好的,如果有更多的帮助和阅读,我需要将“character\u set\u server=utf8mb4”添加到MySQL配置文件“/etc/MySQL/my.conf”。看起来这是由旧版本的连接器引起的问题

从MySQL文档(感谢CFSimply引导我进入页面)

对于连接器/J 8.0.12及更早版本:为了使用utf8mb4字符集进行连接,服务器必须配置字符集\u server=utf8mb4;如果不是这样,当UTF-8用于连接字符串中的字符编码时,它将映射到MySQL字符集名称utf8,这是utf8mb3的别名


这可能是连接器/J的问题,而不是Lucee本身的问题。您正在使用哪个版本的连接器(即MySQL数据源扩展)?可能会有帮助的更多细节:连接器版本是“MySQL连接器Java MySQL-connector-Java-5.1.38(修订版:fe541c166cec739c74cc727c5da96c1028b4834a)(JDBC 4.0)”。这可能是连接器/J的问题,而不是Lucee本身的问题。您正在使用哪个版本的连接器(即MySQL数据源扩展)?一些更详细的信息可能会有所帮助:连接器版本是“MySQL连接器Java MySQL-connector-Java-5.1.38(修订版:fe541c166cec739c74cc727c5da96c1028b4834a)(JDBC 4.0)”连接字符串已经包含“useUnicode=true&characterEncoding=UTF-8”和我用“utf8mb4_unicode_ci”尝试过的表列(和表),“utf8mb4_unicode_520_ci”和“utf8mb4_bin”都有相同的结果。连接字符串已经包含“useUnicode=true&characterEncoding=UTF-8”和我用“utf8mb4_unicode_ci”、“utf8mb4_unicode_520_ci”和“utf8mb4_bin”尝试过的表列(和表)“,所有结果都相同。我认为您可以通过将连接器升级到8.0.13或更高版本来避免更改服务器配置(尽管随着类名的更改,从5.x升级到8.x需要进行测试)。我认为您可以通过将连接器升级到8.0.13或更高版本来避免更改服务器配置(尽管从5.x到8.x需要随着类名的更改进行测试)。