标签: encoding

MySQL:排序规则的非法混合

我尝试使用存储过程来创建索引,但出现以下错误:

ERROR 1267 (HY000): Illegal mix of collations (utf8_general_ci,IMPLICIT) and 
                    (utf8_unicode_ci,IMPLICIT) for operation '='
Run Code Online (Sandbox Code Playgroud)

没有行号或任何其他调试提示。

  • 调试此错误的最佳方法是什么?
  • 有什么好的指导方针可以避免编码不一致吗?

mysql collation utf-8 encoding

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

是否可以使用 OPENROWSET 导入固定宽度的 UTF8 编码文件?

我有一个包含以下内容的示例数据文件,并使用 UTF8 编码保存。

\n
oab~opqr\n\xc3\xb6ab~\xc3\xb6pqr\n\xc3\xb6ab~\xc3\xb6pqr\n
Run Code Online (Sandbox Code Playgroud)\n

该文件的格式是固定宽度,第 1 至第 3 列各分配 1 个字符,第 4 列保留 5 个字符。

\n

我创建了一个 XML 格式文件,如下所示

\n
<?xml version = "1.0"?>  \n<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">  \n   <RECORD>  \n      <FIELD xsi:type="CharFixed" ID="Col1" LENGTH="1"/>       \n      <FIELD xsi:type="CharFixed" ID="Col2" LENGTH="1"/> \n      <FIELD xsi:type="CharFixed" ID="Col3" LENGTH="1"/> \n      <FIELD xsi:type="CharFixed" ID="Col4" LENGTH="5"/> \n      <FIELD xsi:type="CharTerm" ID="LINE_BREAK" TERMINATOR="\\n"/> \n   </RECORD>  \n   <ROW>  \n      <COLUMN SOURCE="Col1" NAME="Col1" xsi:type="SQLNVARCHAR"/>  \n      <COLUMN SOURCE="Col2" NAME="Col2" xsi:type="SQLNVARCHAR"/> \n      <COLUMN SOURCE="Col3" NAME="Col3" xsi:type="SQLNVARCHAR"/>  \n      <COLUMN SOURCE="Col4" NAME="Col4" xsi:type="SQLNVARCHAR"/> …
Run Code Online (Sandbox Code Playgroud)

sql-server azure-sql-database encoding openrowset

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

将 Unicode 转换为非 Unicode / NVARCHAR 到 VARCHAR 时的自动转换

Unicode代码点9619是一个叫“深色”字符:?http://unicode-table.com/en/search/?q=9619)。

使用SQL_Latin1_General_CP1_CI_AS排序规则和 1252 代码页,我希望将该 Unicode 字符转换/转换为非 Unicode 数据类型会导致问号 ( ?),因为代码页 1252 似乎不包含此字符,这似乎是 SQL Server 的无法进行转换时的行为。

所以我的问题是:为什么 SQL Server 将此字符转换为 ASCII 代码 166,即“管道,垂直竖线”:¦

SELECT NCHAR(9619), CAST(NCHAR(9619) AS CHAR(1)), ASCII(CAST(NCHAR(9619) AS CHAR(1)))
Run Code Online (Sandbox Code Playgroud)

sql-server collation encoding unicode

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

将 MySQL 数据库从 latin1 转换为 utf8mb4 - 并处理德语变音

我正在使用 5.6.28 MySQL 社区服务器在 CentOS 6.7 Linux 服务器上以德语托管 WordPress + ProPhoto 博客:

mysql> show tables;
+-----------------------+
| Tables_in_blog        |
+-----------------------+
| wp_commentmeta        |
| wp_comments           |
| wp_links              |
| wp_options            |
| wp_postmeta           |
| wp_posts              |
| wp_term_relationships |
| wp_term_taxonomy      |
| wp_terms              |
| wp_usermeta           |
| wp_users              |
+-----------------------+
11 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

然后最近我开始开发俄语应用程序,不得不在/etc/my.cnf中将MySQL 设置更改为utf8mb4编码:

[client]
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4

[mysqld]
character-set-client-handshake=FALSE
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
Run Code Online (Sandbox Code Playgroud)

现在我的第一个数据库有一个小问题,它仍然显示为latin1

mysql> show …
Run Code Online (Sandbox Code Playgroud)

mysql utf-8 encoding mysql-5.6

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

如何列出 postgreSQL 中可用的所有可用编码类型?

SELECT datname, pg_encoding_to_char(encoding) 
FROM pg_database;
Run Code Online (Sandbox Code Playgroud)

...列出所有数据库,每个数据库都有其编码类型。

但是,我试图找出PostgreSQL 服务器中可用的所有编码类型。我可以查询所有可用的编码类型吗?

还是在第 23.3 章字符集支持中列出了唯一可用的编码类型?

postgresql character-set encoding unicode

7
推荐指数
1
解决办法
3129
查看次数

PostgreSQL:排序规则“C”和“C.UTF-8”之间的区别

在 PostgreSQL 中,排序规则CC.UTF-8?

两者都显示在pg_collation. 无论数据库的实际编码是什么,它是否可能与编码C.UTF-8相同?CUTF-8

postgresql collation encoding locales

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

MySQL 默默地将 UTF 字符替换为文字问号

我遇到了类似于这个问题的情况,即我正在使用一个旧数据库,该数据库在 latin1 表中包含 UTF8 内容(我知道非常难看)。

\n\n

现在我正在从一个完全 utf8 的新应用程序获取新数据,并与其数据库一起使用。为了支持其他遗留系统,应用程序还在遗留表中写入其 utf8 数据的副本。据我所知,只要您读回并将这些数据显示为 UTF8,就应该可以在 latin1 表中写入 utf8 内容。有很多教程解释了如何长期解决这种情况,但我宁愿不应用它们,除非绝对必要(遗留系统将很快被解雇,我不希望有停机时间来解决这个问题,如果可能的)

\n\n

这是一个最小的 SQL 脚本,它重现了我的问题:

\n\n
CREATE TABLE `articles` (\n  `content` mediumtext NOT NULL,\n  FULLTEXT KEY `content` (`content`)\n) ENGINE=MyISAM DEFAULT CHARSET=latin1;\n\nSET NAMES utf8;\nSET CHARACTER SET utf8;\n-- Turkish word for Croatia, second char is \\xC4\\xB1\nINSERT INTO `articles` (`content`) VALUES (\'H\xc4\xb1rvatistan\');\n
Run Code Online (Sandbox Code Playgroud)\n\n

在我的系统中,我没有从 MySQL 收到错误,但在INSERT语句之后,该单词的第二个字符被默默删除并替换为文字?(\'\\x3F\')。

\n\n
mysql> SELECT content, HEX(content), HEX(\'H\xc4\xb1rvatistan\') FROM articles;\n+-------------+------------------------+--------------------------+\n| content     | HEX(content)           | HEX(\'H\xc4\xb1rvatistan\')       |\n+-------------+------------------------+--------------------------+\n| …
Run Code Online (Sandbox Code Playgroud)

mysql character-set utf-8 encoding

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

使用 HASHBYTES() 对 nvarchar 和变量产生不同的结果

我使用服务器端散列来传输密码,然后在数据库中运行 PBKDF2 来存储散列密码 + 盐组合。

散列nvarchar(max)@variable持有相同值的HASHBYTES()函数会产生不同的结果。

DECLARE @hash NVARCHAR(MAX) = 'password5baa61e4c9b93f3f0682250b6'

SELECT HASHBYTES('SHA1', 'password5baa61e4c9b93f3f0682250b6') AS NVARCHAR_INPUT, 
       HASHBYTES('SHA1', @hash) AS VARIABLE_INPUT
Run Code Online (Sandbox Code Playgroud)

产生以下结果:

NVARCHAR_INPUT                             | VARIABLE_INPUT
0xA03BEF0E3EC96CC7C413C6646D3FEC6174DA530F | 0x74B55C42E1E0AB5C5CDF10B28567590B240355C3
Run Code Online (Sandbox Code Playgroud)

这是 SQL Server 2012。这个特定的数据库正在运行 SQL Server Express,所以我也很好奇这个问题是否与版本无关。

sql-server t-sql sql-server-2012 encoding hashing

6
推荐指数
1
解决办法
7689
查看次数

查询以查找给定范围内包含 ASCII 字符的行

我正在使用另一个主题的一些脚本,但接受的答案不适用于我的所有数据场景。我会问我关于如何检查非 Ascii 字符的原始帖子的问题,但我还没有足够的声誉来评论或投票。

问题:

我的测试

我使用示例数据、其中一个答案中的存储过程以及用于演示该问题的查询创建了SQL Fiddle

查询 1:sample_table

-- Note: The "bad dash" row has char(150)

SELECT * FROM sample_table;

+-------------------+
|    DataColumn     |
+-------------------+
| test - good dash  |
| test – bad dash   |
+-------------------+
Run Code Online (Sandbox Code Playgroud)

查询2:其它答案约翰表示“坏破折号”行含有炭(150):

SELECT dbo.Find_Invalid_Chars(DataColumn) [Invalid Characters]
FROM sample_table
WHERE dbo.Find_Invalid_Chars(DataColumn) IS NOT NULL;

+----------------------+
|  Invalid Characters  |
+----------------------+
| test [150] bad dash  |
+----------------------+
Run Code Online (Sandbox Code Playgroud)

查询3: …

sql-server collation t-sql character-set encoding

6
推荐指数
1
解决办法
3502
查看次数

5
推荐指数
1
解决办法
1304
查看次数