标签: encoding

如何将 SQL Server Unicode / NVARCHAR 字符串设置为表情符号或补充字符?

我想根据其 Unicode 代码点将 Unicode 字符串变量设置为特定字符。

我想使用 65535 以外的代码点,但 SQL Server 2008 R2 数据库的排序规则为SQL_Latin1_General_CP1_CI_AS.

根据Microsoft 的 NCHAR 文档,该NCHAR函数采用如下整数:

整数表达式

当数据库的排序规则不包含补充字符 (SC) 标志时,这是一个从 0 到 65535(0 到 0xFFFF)的正整数。如果指定了超出此范围的值,则返回 NULL。有关补充字符的更多信息,请参阅排序规则和 Unicode 支持。

当数据库的排序规则支持补充字符 (SC) 标志时,这是一个从 0 到 1114111(0 到 0x10FFFF)的正整数。如果指定了超出此范围的值,则返回 NULL。

所以这段代码:

SELECT NCHAR(128512);
Run Code Online (Sandbox Code Playgroud)

NULL在此数据库中返回。

我希望它返回与此相同的:

SELECT N'';
Run Code Online (Sandbox Code Playgroud)

如何在排序规则“不包含补充字符 (SC) 标志”的数据库中使用代码(不使用实际表情符号字符)将 Unicode 字符串变量(例如 nvarchar)设置为表情符号?

表情符号 Unicode 代码点的完整列表

(最终我希望任何角色都能工作。我只是为了便于参考而选择了表情符号。)

(虽然服务器是SQL Server 2008 R2,但我也很好奇以后版本有什么解决方案。)

假设没有办法,我可以在另一个具有适当排序规则的数据库中引用内联用户定义函数吗?

如何找到具有“补充字符”标志的归类?

这在我们的服务器上不返回任何记录:

SELECT * FROM sys.fn_helpcollations() 
WHERE name LIKE 'SQL%[_]SC';
Run Code Online (Sandbox Code Playgroud)

似乎引入了 SQL Server …

sql-server collation t-sql encoding unicode

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

使用 PostgreSQL 8.4,如何在 postgres 中将 bytea 转换为文本值?

在我的应用程序中,我使用 C 代码在数据库中插入数据,因为我从不受信任的来源收到的字符串我已经使用PQescapeByteaConnlibpq 库对它们进行了转义。哪个工作得很好,即结果为八位字节格式字符串。看下面的例子,

输入字符串: \n\t\f\b\p\k\j\l\mestPrepared

输出字符串: \\012\\011\\014\\010pkjlmestPrepared

输出字符串被插入到数据库中。现在,我使用 JDBC 从 Java 代码中的数据库中检索该数据。如何将字符串转义回其原始值?

我想到了两种可能的方法,

  1. 更改数据库检索查询并将此字段传递给 postgres 的任何字符串操作函数,即可以将 bytea 转换为文本。
  2. 在Java代码中进行解码。

我可以理解方法 1 会更有效。我已经尝试了这里列出的几乎所有功能但没有任何效果。请帮忙!!

我在 linux 机器上使用 8.4 版的 postgres。

postgresql encoding postgresql-8.4 string bytea

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

SQLCMD 命令无法插入重音符号

我正在尝试运行sqlcmd.exe以便从命令行设置新数据库。我在 Windows 7 64 位上使用 SQL SERVER Express 2012。

这是我使用的命令:

SQLCMD -S .\MSSQLSERVER08 -V 17 -E -i %~dp0\aqualogyDB.sql -o %~dp0\databaseCreationLog.log 
Run Code Online (Sandbox Code Playgroud)

这是一段 sql 文件创建脚本:

    CREATE DATABASE aqualogy 
    COLLATE Modern_Spanish_CI_AS
    WITH TRUSTWORTHY ON, DB_CHAINING ON;
    GO
    use aqualogy
    GO
    CREATE TABLE [dbo].[BaseLayers] (
    [Code] nchar(100) NOT NULL ,
    [Geometry] nvarchar(MAX) NOT NULL ,
    [IsActive] bit NOT NULL DEFAULT ((1)) 
    )

    EXEC sp_updateextendedproperty @name = N'MS_Description', @value = N'Capas de     cartografía base de la aplicaicón. Consideramos en Galia Móvil la cartografía(...)' …
Run Code Online (Sandbox Code Playgroud)

sql-server sqlcmd sql-server-2012 encoding

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

SQL Server 2005/2008 UTF-8 排序规则/字符集

我在 SQL Server 2005/2008 中找不到直接设置UTF-8相关的选项Collations/Charsets,与可以在其他 SQL 引擎中设置的选项相同,但在 SQL Server 2005/2008 中只有拉丁语和 SQL 排序规则。

是否有一些选项可以在 Win2008 操作系统上的 SQL Server 引擎(两个版本)2005/2008 中强制/安装这些排序规则/字符集

sql-server-2005 sql-server-2008 sql-server collation encoding

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

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

如何去除希伯来语重音标记

我需要一个字符编码技巧来去除希伯来语重音标记。

之前的样品

???????????? ??????? ????????? ??????????????? ???????????????

样品后

?????????????? ?? ????? ??????

sql-server collation encoding unicode

17
推荐指数
1
解决办法
1753
查看次数

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

Postgresql:设置默认的 psql 客户端编码

当我使用 连接到 Postgresql 数据库时psql,我经常收到以下消息:

=> SELECT * FROM question_view ;
ERROR:  character with byte sequence 0xd7 0x9e in encoding "UTF8" has no equivalent in encoding "LATIN1"
Run Code Online (Sandbox Code Playgroud)

按照这个SO answer,我知道我应该相应地更改客户端编码:

SET client_encoding = 'UTF8';
Run Code Online (Sandbox Code Playgroud)

client_encoding每次连接到数据库时更改都很麻烦。有没有办法在.pgpass文件中或其他任何地方永久配置此设置?

postgresql psql configuration encoding

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

在 Python 中检索到的 SQL Server VARCHAR 列的编码问题

我们最近遇到了与在 SQL Server 中存储为 varchar(120) 的字段相关的编码问题。在 SSMS 中,varchar 显示为:

“谁杀了琼本?”

但是,当它被带入python时,它显示为:

在此处输入图片说明

我从 Python 方面对此进行了研究,并没有发生什么奇怪的事情。我的理论是 SQL Server 中的 varchar 接受 UTF-8 字符,这些字符在 python 中的显示方式与 SSMS 不同。我对 SQL Server 中的编码不是很熟悉。有人可以让我知道以下内容:

  • 在 SSMS 中有没有办法查看 varchar 的编码?例如,查看 \x82 而不是显示当前来自 SSMS 的逗号?
  • 我们正在使用 SQL Server 2008。有没有办法将任何 UTF-8 字符的编码更改为 ASCII 字符而不使用导入/导出工具或转储到平面文件?即我可以通过查询进行这种转换吗?
  • 有什么方法可以通过查询以编程方式识别有问题的记录(问题被定义为 ASCII 不支持的 UTF-8 字符)?

先感谢您!

使用sp_help N'table_name';我发现这个VARCHAR列的排序规则是:SQL_Latin1_General_CP1_CI_AS

sql-server sql-server-2008-r2 utf-8 encoding python

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

Postgres - 编码、整理和 CType

                                                        List of databases 
          Name           |  Owner   | Encoding |          Collate           |           Ctype            |
-------------------------+----------+----------+----------------------------+----------------------------|
 MyDatabase              | postgres | UTF8     | English_United States.1252 | English_United States.1252 |
Run Code Online (Sandbox Code Playgroud)

有人能解释一下编码、整理和 Ctype 是如何相互关联的吗?

我知道编码会影响信息的实际存储方式(即“A”需要一个字节还是多个字节,以及这些字节的值取决于编码)。

有人告诉我 collat​​e 指定比较字符的规则。如果要对一堆字符串进行排序,则整理类型将决定顺序。

我一直在努力寻找 Ctype 是什么;可能与大写和小写等概念有关(假设 'a' 知道 'A' 是大写形式?)。

我不明白(如在我的示例中)我如何拥有一个 UTF8 编码的数据库并使用英语 1252 的校对值。UTF8 有很多 win1252 没有的字符;如果我尝试对它们进行排序或比较会发生什么?我当前的设置是荒谬的......似乎我总是希望编码/整理/Ctype 同意?

postgresql encoding localization

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