相关疑难解决方法(0)

如何将MySQL表更改为UTF-8?

我知道表和数据库的语言有很多设置.

我已经创建了数据库.我相信当我创建它时,它是默认/ LATIN.我想改变一切 - 我的意思是...... 表和数据库,改为UTF-8.

我怎样才能做到这一点?谢谢.

mysql database encoding utf-8

25
推荐指数
2
解决办法
5万
查看次数

字符串值不正确:'\ xC2\x9Fe 10 ...'列

我们在服务器2003上运行了一个旧的5.1 Mysql服务器.最近我们转向使用Mysql 5.6和server 2008的新环境.现在在新服务器上,当插入像'Ã'这样的特殊字符时,我们不断出错.

现在我检查了源编码,它是UTF-8.但旧的Mysql服务器配置为latin1(服务器/表/冒号)与排序规则latin_swedish_ci,我们没有在旧环境中收到任何错误.

现在我做了一些测试,因为我们没有在新环境中生活.我已经尝试将所有表设置为表/冒号以及latin1.在这两种情况下,我都会遇到这些错误.

我注意到在旧服务器上,服务器默认的字符集是latin1,在新服务器上是utf-8.这可能是问题吗?我发现这很奇怪,因为源是utf-8.

是否有一些选项可以处理这个可以在旧环境中打开?我不确定是否存在类似的东西.我确实比较了mysql管理工具中的设置,除了默认的字符集外,它看起来是一样的.

编辑:

SHOW VARIABLES喜欢'char%';

旧服务器:

+--------------------------+-----------------------------------------------+
| Variable_name            | Value                                         |
+--------------------------+-----------------------------------------------+
| character_set_client     | utf8                                          | *
| character_set_connection | utf8                                          | *
| character_set_database   | latin1                                        |
| character_set_filesystem | binary                                        |
| character_set_results    | utf8                                          | *
| character_set_server     | latin1                                        |
| character_set_system     | utf8                                          |
Run Code Online (Sandbox Code Playgroud)

新服务器:

+--------------------------+-----------------------------------------------+
| Variable_name            | Value                                         |
+--------------------------+-----------------------------------------------+
| character_set_client     | utf8mb4                                       | *
| character_set_connection | utf8mb4                                       | *
| character_set_database   | …
Run Code Online (Sandbox Code Playgroud)

c# mysql character-encoding mysql-odbc-connector

11
推荐指数
1
解决办法
1982
查看次数

如何将错误编码的数据转换为UTF-8?

我正在使用旧的mysql数据库中的数据.这个数据库中有一个表,其字符串列的编码设置为"cp1252 West European(latin1)"(与Windows-1252相同).从mysql命令提示符查询数据时,此字段中的数据表示为:

Obama’s

这应该是读

Obama’s

我试过按照如何将整个MySQL数据库字符集和整理转换为UTF-8的接受答案在MySQL中将字段转换为UTF-8,但没有区别.

我还尝试在该表中插入一个新行,使用Obama’s该字段的文本(同样,从mysql命令提示符).但是,当我查询刚刚插入的同一行时,正确表示了此文本.当字段设置为latin1并且设置为UTF-8时,我尝试执行该插入.结果相同.

这让我相信,当坏数据被插入数据库时​​,它首先被PHP错误编码.这是我变得模糊的地方.

我可以假设数据是通过Web表单插入并使用PHP处理的.PHP在将其插入数据库之前做了什么?它是否将字符串转换为UTF-8,根据此有用页面上表格,它使用三个字节%E2 %80 %99来表示字符.我有这个权利吗?

如果这是正确的,我有什么选择来修复这些数据?我想将表及其字段转换为UTF-8编码,但这似乎无法修复文本.我是否必须编写一个手动将这些字符更改为应该是什么的脚本?

php mysql character-encoding

10
推荐指数
1
解决办法
4003
查看次数

Liquibase:如何在MySQL数据库表上设置Charset UTF-8?

我的Liquibase变更集看起来像

<changeSet id="05192014.1525" author="h2">
        <createTable tableName="network">
            <column name="network_id" type="BIGINT(19) UNSIGNED">
                <constraints nullable="false" primaryKey="true"/>
            </column>
            <column name="name" type="VARCHAR(300)">
                <constraints nullable="false"/>
            </column>
            <column name="active" type="TINYINT(1)" defaultValue="1">
                <constraints nullable="false"/>
            </column>
            <column name="created_at" type="TIMESTAMP" defaultValueComputed="CURRENT_TIMESTAMP">
                <constraints nullable="false"/>
            </column>
            <column name="created_by" type="VARCHAR(100)"/>
            <column name="updated_at" type="TIMESTAMP"/>
            <column name="updated_by" type="VARCHAR(100)"/>
        </createTable>
    </changeSet>
Run Code Online (Sandbox Code Playgroud)
  • 我已经将liquibase与Maven使用插件集成在一起
  • 当我跑mvn clean install,它创建MySQL表格

CREATE TABLE network( network_idbigint(19)unsigned NOT NULL, namevarchar(300)NOT NULL, activetinyint(1)NOT NULL DEFAULT'1', created_attimestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
created_byvarchar(100)DEFAULT …

java mysql utf-8 liquibase maven

10
推荐指数
3
解决办法
1万
查看次数

Django MySQL 'utf8' 目前是字符集 UTF8MB3 的别名,它将被 UTF8MB4 取代

我在 Mac Sierra 上使用 Django 2.0.4、MySQL 8.0.11、mysqlclient-1.3.12 和 Python 3.6.5。我收到以下警告:

/lib/python3.6/site-packages/django/db/backends/mysql/base.py:71: 警告: (3719, "'utf8' 目前是字符集 UTF8MB3 的别名,它将被 UTF8MB4 替换在以后的版本中。请考虑使用 UTF8MB4 以便明确。”)

我知道这只是一个警告,但我仍然不喜欢看到它并且一直在寻找解决方案。我尝试了很多方法,包括使用 UTF8 Collat​​ion UTF8-bin 和 UTF8MB4 Collat​​ion UTF8MB4-bin 中的各种选项删除和重新创建我的架构,但似乎没有任何效果。此警告来自 MySQL/base.py,但我不知道是谁在使用 MySQL 反对的“utf8”进行调用。

谁有想法?

附加信息

在下面的答案之后,我开始思考这个问题,并意识到到目前为止我只在 migrate 命令期间收到了这个警告,这似乎是 auth 应用程序的初始设置。我用 sqlmigrate 命令查看了所有 sql,但没有看到任何提到 utf8 的内容,所以我仍然不知道为什么会发生这种情况

(CL) Mac-mini:mysite Lehrian$ python manage.py migrate 要执行的操作:应用所有迁移:admin、auth、contenttypes、polls、sessions 运行迁移:Applying contenttypes.0001_initial... OK Applying auth.0001_initial... OK 正在应用 admin.0001_initial... OK 正在应用 admin.0002_logentry_remove_auto_add... OK 正在应用 contenttypes.0002_remove_content_type_name... OK 正在应用 auth.0002_alter_permission_name_max_length... OK 正在应用 auth.0002_alter_permission_name_max_length... OK 应用 auth.0003...身份验证mysql/base.py:71:警告:(3719,“'utf8' 目前是字符集 UTF8MB3 的别名,在未来的版本中将被 UTF8MB4 替换。请考虑使用 …

mysql django utf-8 utf8mb4

8
推荐指数
2
解决办法
2万
查看次数

Spring-Boot,无法使用spring-data JPA在MySql中保存Unicode字符串

我有这样的 application.properties设置:

spring.datasource.username = root
spring.datasource.password = root
spring.datasource.url = jdbc:mysql://localhost:3306/dbname?useUnicode=yes&characterEncoding=UTF-8
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.show-sql = true
spring.jpa.hibernate.ddl-auto = update
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
Run Code Online (Sandbox Code Playgroud)

在我的pom.xml财产中,我像这样设置:

<properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <start-class>toyanathapi.Application</start-class>
        <java.version>1.8</java.version>
</properties>
Run Code Online (Sandbox Code Playgroud)

我的实体:@Entity公共类DailyRashifalEntity {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String date;
private int rollno;
private String name;
//Constructors and getters/setters 
}
Run Code Online (Sandbox Code Playgroud)

问题1: 如果我使用上述设置,则会出现异常

java.sql.SQLException: Incorrect string value: '\xE0\xA4\xA7\xE0\xA4\xBE...
Run Code Online (Sandbox Code Playgroud)

问题2:如果我将数据源URL更改为此:

spring.datasource.url = jdbc:mysql://localhost:3306/dbname
Run Code Online (Sandbox Code Playgroud)

我数据库中的unicode像这样保存

 29 | 2074-03-04 |        3 | ?????????????? ?????,?????? ??????, ??????????? ????? ? ???? ???? …
Run Code Online (Sandbox Code Playgroud)

mysql unicode spring spring-jdbc spring-boot

6
推荐指数
2
解决办法
4320
查看次数

插入西里尔文文本时出现异常:第 1 行的列“ ”的字符串值不正确:“\xD1\x82\xD0\xB5\xD1\x81...”错误代码:1366

我有包含列及其属性的 MySQL 表:

\n\n
name:               message\ndatatype:           varchar(300)\ndefault/expression: utf8\n
Run Code Online (Sandbox Code Playgroud)\n\n

我尝试在包含西里尔文文本的表中插入新数据。

\n\n

这是我的 sql 查询:

\n\n
INSERT INTO db.log (id, info_id, user_id, timestamp, operation, message) \n  VALUES ('792','575', '35','2016-12-20 12:09:45','add',\n  'user@gmail.com created new line \xd1\x82\xd0\xb5\xd1\x81\xd1\x82 ')\n
Run Code Online (Sandbox Code Playgroud)\n\n

我得到了例外:

\n\n

1 row(s) affected, 1 warning(s): 1366 Incorrect string value: '\\xD1\\x82\\xD0\\xB5\\xD1\\x81...' for column 'message'

\n\n

我可以做什么来解决异常?

\n

mysql utf

3
推荐指数
1
解决办法
2503
查看次数

插入表情符号不适用于spring-boot和MariaDB

我想像在mariaDB数据库中插入表情符号,但是我总是遇到sql错误。

这是堆栈跟踪:

12-01-2018 16:01:44.466 [Executor - Migration - 1] WARN  o.h.e.jdbc.spi.SqlExceptionHelper.logExceptions:129 - SQL Error: 1366, SQLState: 22007
12-01-2018 16:01:44.466 [Executor - Migration - 1] ERROR o.h.e.jdbc.spi.SqlExceptionHelper.logExceptions:131 - (conn:498) Incorrect string value: '\xF0\x9F\x92\xB3\xF0\x9F...' for column 'notes' at row 1
Query is: insert into customer (backend_archiving_date, backend_creation_date, backend_update_date, genius_client_id, address, birthday, city, company_name, country, email, fidelity_account_id, first_name, last_name, notes, phone, siret, zip_code, id) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?), …
Run Code Online (Sandbox Code Playgroud)

utf-8 mariadb utf8mb4 spring-boot

2
推荐指数
2
解决办法
2762
查看次数