标签: character-set

如何将笑脸插入 MySQL ( )

我在 MySQL 5.5.21 上,并尝试插入 '\xF0\x9F\x98\x8A' 笑脸字符。但是对于我的生活,我不知道该怎么做。

根据我一直在阅读的各种论坛,这是可能的。但是每当我尝试时,数据都会被截断。

mysql> INSERT INTO hour  (  `title`,   `content`,   `guid` ,  `published` , `lang` ,  `type` ,  
       `indegree` ,  `lon` ,  `lat` ,  `state` ,  `country` , `hour`  )   
       VALUES ( "title" ,  "content   content" ,  "guid" ,  1,  1,   
                     "WEBLOG",  1,  1,  1,  "state" ,  "country" ,  1 );
Query OK, 1 row affected, 2 warnings (0.00 sec)

mysql> show warnings;
+---------+------+-------------------------------------------------------------------------------+
| Level   | Code | Message                                                                       |
+---------+------+-------------------------------------------------------------------------------+
| Warning | 1366 …
Run Code Online (Sandbox Code Playgroud)

mysql sql-injection character-set

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

为什么 varchar 数据类型允许 unicode 值?

我有一个带有 varchar 列的表。它允许使用商标 (™)、版权 (©) 和其他 Unicode 字符,如下所示。

Create table VarcharUnicodeCheck
(
col1 varchar(100)
)

insert into VarcharUnicodeCheck (col1) values ('MyCompany')
insert into VarcharUnicodeCheck (col1) values ('MyCompany™')
insert into VarcharUnicodeCheck (col1) values ('MyCompany?')
insert into VarcharUnicodeCheck (col1) values ('MyCompanyï')
insert into VarcharUnicodeCheck (col1) values ('MyCompany')

select * from VarcharUnicodeCheck
Run Code Online (Sandbox Code Playgroud)

但是varchar定义说,它允许非 unicode 字符串数据。但 Trademark(™) 和 Registered(®) 符号是Unicode字符。定义是否与 varchar 数据类型的属性相矛盾?我阅读了几个链接,例如第一个第二个。但是我仍然不明白为什么当定义说它只允许非 unicode 字符串值时它允许 unicode 字符串。

sql-server datatypes character-set encoding unicode

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

使用单个命令修改数据库中的所有表

是否有一个或一行命令来修改数据库中的所有表。我想在数据库中的每个表中发出此命令:

ALTER TABLE `table_name` CONVERT TO CHARACTER SET utf8;
Run Code Online (Sandbox Code Playgroud)

我的目标是将字符集从 latin1 修改为 utf8 到所有表。

更新: RDBMS 是 MySQL

mysql alter-table character-set

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

启动 SQL Server 2017 服务时出错。错误代码 3417

我的计算机上安装了 SQL Server 2017。这是SELECT @@VERSION返回的内容:

Microsoft SQL Server 2017 (RTM-GDR) (KB4293803) - 14.0.2002.14 (X64) 2018 年 7 月 21 日 07:47:45 版权所有 (C) 2017 Microsoft Corporation Enterprise Edition(64 位),Windows 10 Enterprise 10.0(Build 171) )`

直到昨天它都运行良好。突然SQL SERVER Service没跑了。当我想手动运行该服务时,它显示3417 error. 当我检查事件日志时,我看到了这个错误:

数据库 'master' 的脚本级升级失败,因为升级步骤 'msdb110_upgrade.sql' 遇到错误 200,状态 7,严重性 25。这是一个严重的错误情况,可能会干扰正常操作,数据库将脱机。如果在升级“master”数据库期间发生错误,它将阻止整个 SQL Server 实例启动。检查以前的错误日志条目是否有错误,采取适当的纠正措施并重新启动数据库,以便脚本升级步骤运行完成。`

经过一番谷歌搜索后,我发现我可以运行它/T902 switch并尝试解决问题。但没有任何解决方案对我有用。所以我安装了相同SQL SERVER 2017和恢复数据库的另一个实例。现在新安装的实例也有同样的问题。

可能是什么问题呢?

更新 这是 SQL Server 的完整错误日志。

2018-09-17 13:06:47.29 spid6s 配置选项“显示高级选项”从 1 更改为 1。运行 RECONFIGURE 语句进行安装。

2018-09-17 …

sql-server character-set encoding sql-server-2017

16
推荐指数
1
解决办法
7282
查看次数

为什么默认 character_set_server 是 latin1?

我正在使用 MySQL 5.5,当我显示有关字符集的变量时,我有

+--------------------------+----------------------------+
| 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                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
Run Code Online (Sandbox Code Playgroud)

我是否需要将character_set_database和更改character_set_serverutf8

mysql percona character-set mysql-5.5 utf-8

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

确定 Oracle 会话客户端字符集?

知道数据库字符集(NLS_CHARACTERSETin select * from v$nls_parameters;)和客户端字符集(客户端环境设置NLS_LANG)是如何交互的。

然而,我不知道的是,我如何或是否可以确定, 对于已建立的会话,Oracle 认为当前客户端字符集是什么。

这可能吗?

注意:SELECT * FROM NLS_SESSION_PARAMETERS;确实包含字符集(上10G2)。

完全清楚我想完成什么:

  1. NLS_LANG 在客户端环境中设置为任意值(例如 GERMAN_GERMANY.WE8MSWIN1252
  2. 数据库应用程序[*] 启动并建立到 Oracle 数据库的连接/会话。
  3. 数据库应用程序[*] 想“询问” Oracle(而不是其操作系统环境)Oracle 将假设的客户端字符集是什么。

[*]:如果db应用程序是sqlplus,示例如下:

...
sqlplus /nolog
connect user/pass@example
*magic command*;
   CLIENT CHARACTERSET = ...
Run Code Online (Sandbox Code Playgroud)

杰克在他的回答中的注释提出了两个要点:

  • 与甲骨文,做的字符集转换。它是客户端库代码还是在服务器端完成?
  • 由于它似乎是客户端,因此客户端需要公开此设置——客户端库/工具假定此设置是什么。是否有任何 Oracle 客户端库/工具(sqlplus、OCI/OCCI、Pro*C、...)可以查询它认为此设置是什么?

oracle character-set

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

如何将 MySQL 中的控制字符从 latin1 转换为 UTF-8?

在将数据库转换为 UTF-8 时,我注意到有关控制字符 0x80-0x9F 的奇怪行为。例如,0x92(右撇号)不会被转换为 UTF-8 并使用以下方法截断列的其余内容:

CREATE TABLE `bar` (
 `content` text
) ENGINE=MyISAM DEFAULT CHARSET=latin1

INSERT INTO bar VALUES (0x8081828384858687898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F);
Query OK, 1 row affected (0.06 sec)

SELECT content FROM bar;
+---------------------------------------------------------------------------------+
| content                                                                         |
+---------------------------------------------------------------------------------+
| €‚ƒ„…†‡‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ                                                 |
+---------------------------------------------------------------------------------+
1 row in set (0.06 sec)

ALTER TABLE bar CHANGE content content TEXT CHARACTER SET UTF8;
Query OK, 1 row affected, 1 warning (0.06 sec)
Records: 1  Duplicates: 0  Warnings: 1

SHOW WARNINGS;
+---------+------+-------------------------------------------------------------------------------------+
| Level   | Code …
Run Code Online (Sandbox Code Playgroud)

mysql character-set

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

与 MySQL 的 utf8mb4 字符集等效的 SQL Server 是什么?

我们有一些基于数据库的 Web 应用程序,它们utf8mb4用作字符集和utf8mb4_Standard排序规则。

MYSQL

我们看到我们可以在这个设置中使用我们想要的任何字符。

在 SQL Server Express 中,情况对我来说不是很清楚。

当我切换到Standard它时选择Latin1_General_CI_AS排序规则。

但我不知道这是哪种字符编码,如果我们想将一些数据从utf7mb8MySQL 表接管到 SQL Server 中,它会如何影响场景。

在此处输入图片说明

当我查看 SQL Server 中的数据类型定义时,我可以看到有 Unicode 和非 Unicode 类型。所以我想知道排序规则是否真的影响它的存储方式:

在此处输入图片说明

看来,如果您使用nchar,nvarchar或者nvarchar(max)您在使用 UTF-16 时处于安全状态。

但是,整理Latin1_General_CI_AS是什么意思?

例如,特别是如果你有中文字符,这会如何表现?

sql-server migration collation character-set unicode

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

如何列出 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
查看次数

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万
查看次数