问题标签 [character-set]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
117 浏览

python - 通过 SQLAlchemy 插入 MySQL 的行上的字符集会因机器而异?

我使用以下 Python 代码在 MySQL 表中插入一行:

在我的本地机器上进行测试时,正确插入了一个示例行:

使用来自不同机器 (AWS) 的相同代码会导致行略有不同:

整个 MySQL 数据库都配置为使用 utf8mb4 编码,实际上我花了很多时间相信 MySQL 应该为编码错误负责。但是由于我一直在不同的机器上运行它,我注意到相同的代码可以在一台机器上运行,但不能在另一台机器上运行。

由于正在执行相同的代码,我不相信我的 Python 代码是罪魁祸首。

Linux 和我在这里缺少的字符集/字符编码有什么奇怪的地方吗?

编辑:我应该注意到它们连接到同一个 RDS 数据库,这意味着数据库在两个插入之间是一致的。

0 投票
0 回答
81 浏览

php - 当 MySQL 配置为“UTF8”时,为什么 mysql_client_encoding() 返回“latin1”?

当我SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%'在 MySQL 中运行时,我得到以下变量:

但是,当我运行一个简单的测试以在 PHP 中连接到 MySQL而不设置任何编码时,mysql_client_encoding()返回latin1,但在 MySQL 字符集中找不到该编码。

为什么会发生这种情况,我该如何解决它,这样我就不必在mysql_set_charset('UTF8');每次连接到 MySQL 时都不断地指定?

0 投票
1 回答
217 浏览

iso - ISO 标准目录 01.140.10 使用的基本拉丁字符集是什么?

我参考了“ISO 标准目录 01.140.10 使用的基本拉丁字符集”,我需要知道确切的代码点集。

如果不阅读标准目录 01.140.10中的所有标准,我能否在某处找到这个基本拉丁字符集(最好是相当权威的)?

是“Latin-1”、ISO 8859-1 等吗?还是完全不同的东西?

0 投票
0 回答
1059 浏览

java - 如何将所有 utf-8 字符写入 Java 中的文件

需要使用 Java 创建一个包含所有 utf-8 字符的文件,或者在运行时将所有 utf8 字符创建为字符串。我尝试使用以下代码创建字符串。

但是当我尝试在控制台上将此字符打印为字符串时,我看到有很多“?” 符号。我不确定这是否是生成 utf8 字符集的正确方法。我读到 utf 字符可以是 1-4 字节范围。但是 java char 是 2 个字节。我认为在这种情况下我应该做错了什么。我浏览了许多链接,但找不到合适的答案。有人可以帮助解决这个问题。

0 投票
1 回答
293 浏览

swift - 检查单个 UnicodeScalar 的 CharacterSet 会产生奇怪的行为

在与CharacterSet我合作时,我遇到了一个有趣的问题。到目前为止,我收集到CharacterSet的内容是基于UnicodeScalar; 您可以使用标量初始化它并检查标量是否包含在集合中。查询该集合以查明它是否包含 a Character,谁的字形可能由几个 unicode 标量值组成,这是没有意义的。

我的问题在于当我使用表情符号进行测试时,表情符号是一个 unicode 标量值(十进制的 128518)。由于这是一个单一的 unicode 标量值,我原以为它会起作用,结果如下:

如您所见,如果CharacterSet包含单个标量值(可能是由于优化),则检查有效,但在任何其他情况下,它都无法按预期工作。

我找不到任何关于较低级别实现CharacterSet或它是否以某种编码(即 UTF-16 之类NSString)工作的信息,但由于 API 处理了很多,UnicodeScalar我很惊讶它会像这样失败,我不确定为什么会发生这种情况,或者如何进一步调查。

任何人都可以解释为什么会这样吗?

0 投票
1 回答
483 浏览

java - IText - 使用 PdfDictionary 和 PDF Stamper 编辑西班牙语文档

我正在尝试使用 itext 读取文档并替换其中的字符串。但是一旦被操纵,所有的西班牙字符都会变成垃圾字符。以下是更改pdf的代码。

在实际的 pdf 中有一个字符串 ${address-line-one} 我将其替换为“20th Street”

这可行,但使用流中的这个西班牙语单词

Documentación 成为 Documentaci�n

和其他西班牙语单词一样。

我还在 java 控制台中打印了 bytes[] ,发现读取本身没有正确获取该字符。

有什么建议吗?

0 投票
1 回答
99 浏览

sql - sqlcmd SQL 返回字符串值作为#name?- 值在 SSMS 中正确显示

我有一个简单的 SQL 查询,它从 varchar2 列中提取值。它在 SSMS 中返回正确的值,但是在 sqlcmd 中它返回:“#NAME?” (没有双引号)。

它试图返回的实际值是“-W”(没有双引号)

我正在运行的代码是:

知道这里有什么问题吗?可能是字符集问题?

软件版本:

SQL Server Management Studio V17.1

sqlcmd 版本 14.0.500.272 NT

0 投票
0 回答
580 浏览

mysql - MySQL InnoDB 表不接受带有 utf8mb4 编码的表情符号

我一直在尝试按照本教程中的步骤让我的数据库接受表情符号,因为它似乎是链接最多的一个。

https://mathiasbynens.be/notes/mysql-utf8mb4

即使有一个测试数据库,我也无法让它工作,到目前为止我找不到答案。这是我正在运行的一些测试代码。

我收到的错误

我必须有其他东西才能完成这项工作。所以..它是什么。

另一个谜题的线索是

退货

这是不正确的,但是当我检查 MySQL Workbench 中的选项文件时,看到在 General/International 下我有以下设置

my.ini 的内容

感谢您的时间和您可以提供的任何帮助。

0 投票
0 回答
207 浏览

oracle - 连接具有不同字符集的表

我正在尝试将数据库 1 中的表 1 连接到数据库 2 中的表 2。数据库 1 和数据库 2 具有不同的字符集。当我执行连接时,我收到 ORA-29275 错误(部分多字节字符)。我知道这是由于字符集/排序规则不同。

是否可以在不更改任一数据库的排序规则/字符集的情况下将表 1 连接到表 2?我试过cast()substr()- 这没有帮助。

字符集 db1:WE8ISO8859P1 字符集 db2:UTF8

询问: SELECT * FROM EMPLOYEES@DB1 e1 LEFT JOIN EMPLOYEES@DB2 e2 ON e1.SURNAME = e2.SURNAME

数据类型: e1.SURNAME= varchar2(78bytes) e2.SURNAME= varchar2(40bytes)

0 投票
1 回答
32 浏览

mysql - 通过 Windows cmd 将中文字符插入 MySQL 时出现奇怪的问题

我的环境

  • 系统:Windows 7 64 位
  • 数据库:MySQL 5.7.20 64 位
  • 地区:中文
  • cmd代码页:CP936

MySQL 设置

我的问题

在上述环境和数据库设置下,我尝试在创建的表cs_2中插入一条记录,但是失败了。

SQL 语句如下:

插入cs_2(方向)值('出');

结果是:

错误 1366 (HY000):不正确的字符串值:第 1 行的列 'direction' 的 '\xBA'

个人分析

在对mysql字符转换和Windows cmd输入转换进行了一些研究之后,我得到了以下指导:

  • 首先是我在cmd上输入字符串时的字符转换:

键盘输入 -> 输入法转换 -> 系统内部编码

在我的例子中,系统内部编码是'出' 的UTF-16 LE格式的字节流</p>

  • 二、是MySQL通信中根据系统变量的转换

系统内部编码 -> character_set_client -> character_set_connection -> 表的字符集

就我而言,这是

UTF-16 LE -> gbk -> gbk ->gbk

只有在系统内部编码和 character_set_client 之间的开始发生了转换。我认为转换是由系统本身执行的。

因此,在这种假设下,插入 SQL应该已经成功运行,但它失败了!我不知道为什么,我为这个问题苦苦挣扎了好几天,但我找不到解决方案。

如果有人碰巧遇到这个问题,请给我一些线索。非常感谢提前!