如何使用Lucee将UTF-8数据插入MySQL?
我试图使用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
- 我将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需要随着类名的更改进行测试)。