由于语言编码

时间:2018-02-09 11:31:52

标签: mysql encoding character-encoding localhost

当我从服务器导入sql文件时,我会收到奇怪的字符。我想相信它的编码。我正在写服务器bd和本地bd的值:

SERVER:

collation_connection: utf8mb4_general_ci
collation_database: utf8_spanish_ci
collation_server: utf8_general_ci

character_set_client: utf8mb4
character_set_connection: utf8mb4
character_set_database: utf8
character_set_filesystem: binary
character_set_results: utf8mb4
character_set_server: utf8
character_set_system: utf8
character_sets_dir: C:\Program Files\MySQL\MySQL Server 5.7\share\charsets\

LOCAL

collation_connection: utf8mb4_general_ci
collation_database: latin1_swedish_ci
collation_server: latin1_swedish_ci

character_set_client: utf8mb4
character_set_connection: utf8mb4
character_set_database: latin1
character_set_filesystem: binary
character_set_results: utf8mb4
character_set_server: latin1
character_set_system: utf8
character_sets_dir: C:\xampp\mysql\share\charsets\

文件SQL导入包含以下脚本:

CREATE DATABASE IF NOT EXISTS `prueba` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_spanish_ci */;
USE `prueba`;
CREATE TABLE IF NOT EXISTS `pruebaTable` (
`co_pruebaTable` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(100) COLLATE utf8_spanish_ci NOT NULL
PRIMARY KEY (`co_pruebaTable`)
) ENGINE=InnoDB AUTO_INCREMENT=418630 DEFAULT CHARSET=utf8 
COLLATE=utf8_spanish_ci;

当我在本地导入数据库时​​,“pruebaTable”中的“name”列包含稀有字符,但在服务器数据库中我正确地看到了这些数据

我尝试使用此查询更改此变量,但它不起作用:

set collation_database=utf8_spanish_ci;

可以解决什么问题?当我导入这个文件sql时,我需要正确看到这些数据。我用notepad ++打开这个文件,我可以正确地看到数据。编码.sql是:UTF-8,所以问题应该是编码到本地数据库,我认为

由于

2 个答案:

答案 0 :(得分:0)

尝试更改您的数据库:

<div class="col-lg-2"> <ul class="list-unstyled trash"> <li> <a href="/responses/{{$response->id}}"> <span onclick="alertDialog()" class="glyphicon glyphicon-trash"></span></a></li> <li><button type="button" class="btn btn-danger btn-sm" data-toggle="modal" data-target="#{{$response->id}}">Edit</button></li> </ul> </div>

答案 1 :(得分:0)

列定义会覆盖表定义,该定义将覆盖数据库定义。列定义不是问题。

你是如何做“导入”的?如果它与LOAD DATA一起使用,请使用其中为加载建立CHARACTER SET的子句。

连接时是否建立了字符集?你使用SET NAMES utf8;吗?还有别的吗?

请参阅Trouble with UTF-8 characters; what I see is not what I stored

中的“Mojibake”

让我们从另一边调试一下......你得到了什么“奇怪的角色”? SELECT HEX(name) ...对于奇怪的文本有什么结果?

F1 C3B1 当使用latin1 ñ C3B1 F1 C383C2B1 , hex¡±进行“双重编码”编码时,when correctly encoded in utf8 (or utf8mb4), or hex为十六进制when it shows as