163,990
社区成员




系统:windows server 2019(64位)
mysql:mysql-installer-community-8.0.33.0.msi(64位)
ODBC :MySQL ODBC 8.0 Unicode Driver(64位)
======================================================================================
1.在mysql黑屏下可以插入汉字;
2.通过asp插入汉字时出现以下错误:
Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005'
[MySQL][ODBC 8.0(w) Driver][mysqld-8.0.32]Incorrect string value: '\xC4\xDA' for column 'SafetyLocation' at row 1
/cnxqzzx/1administrator/1_Add_Safety.asp,行 63
======================================================================================
1、数据表编码信息:
show table status from lcnxqzzx like '%schools%'
Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time | Update_time | Check_time | Collation | Checksum | Create_options | Comment |
| schoolsafety | InnoDB | 10 | Dynamic | 39 | 420 | 16384 | 0 | 0 | 0 | NULL | 2023-04-20 11:24:34 | 2023-04-20 11:23:51 | NULL | utf8mb4_0900_ai_ci | N
2、数据库字符编码:
show variables like '%char%';
| Variable_name | Value | character_set_client | utf8mb4 | | character_set_connection | utf8mb4 | | character_set_database | utf8mb4 | | character_set_filesystem | binary | | character_set_results | utf8mb4 | | character_set_server | utf8mb4 | | character_set_system | utf8mb3 | | character_sets_dir | C:\Program Files\MySQL\MySQL Server 8.0\share\charsets\ |
3、查询数据库字符排序规则:
show variables like '%colla%';
+-------------------------------+--------------------+ | Variable_name | Value | +-------------------------------+--------------------+ | collation_connection | utf8mb4_0900_ai_ci | | collation_database | utf8mb4_0900_ai_ci | | collation_server | utf8mb4_0900_ai_ci | | default_collation_for_utf8mb4 | utf8mb4_0900_ai_ci | +-------------------------------+--------------------+
=============================================================================
我是新手已经调试两天解决不了,请高手高手赐教!!!
这个错误主要是由于字符集不兼容导致的,MySQL 8.0默认使用四字节UTF-8字符集(utf8mb4),而ODBC的UTF-8驱动默认使用三字节UTF-8字符集(utf8),asp网页的默认字符集可能也是gbk等,需要进行字符集转换。
以下是一些解决方案:
执行如下操作:
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8;
可以尝试安装MySQL Connector/ODBC 8.0.26 版本,该版本支持utf8mb4字符集。
在ASP代码中将SafeLocation字段的值从gbk或其他字符集转换为utf8mb4字符集,可以通过如下代码进行转换:
safetyLocation = Server.HtmlEncode(Request.Form("SafeLocation"))
safetyLocation = Response.CharSetConvert("gbk", "utf-8", safetyLocation)
或者使用ADODB.Stream对象在ASP中进行字符集转换。
希望以上内容能够对您有所帮助。
请用控制台打印出来拼接字符后发给数据库的语句
设置一下ASP页面的字符集呢?