在Powershell中将表情符号UTF8转换为Unicode



我需要使用powershell将数据持久化到数据库中。数据中偶尔会包含表情符号。

DB:在DB方面,一切都应该很好。属性设置为NVARCHAR,这使得表情符号可以持久存在。当我手动插入数据时,表情符号在我查询后显示()。我用SSMS中的示例数据测试了它,它运行得很好。

Powershell:在Powershell中准备SQL语句时,我注意到表情符号是用UTF8来解释的(°)。基本上是胡言乱语。

从UTF8到Unicode的转换是必要的吗?我如何将表情符号保持为和不保持为"°/1f600 ">

我的同事对这个问题有正确的答案。

要在MS SQL数据库中持久化表情符号,您需要将列声明为nvarchar(max)(max不一定是),我已经这样做了。

我试图将我在PS脚本中硬编码的示例数据持久化,就像一样

@{ description = "Example Description }

显然,VS Code在数据之上添加了某种编码(我们的猜测)。

基本上解决了这个问题的是简单地从API请求数据,并将其持久化到数据库中,前缀字符串文字为N+nvarchar(max)列数据类型

示例:SET @displayNameFormatted = N'"+$displayName+"'然后将该变量包含在插入语句中。

这能回答您的问题吗"使用NVARCHAR(size)数据类型,并在字符串文字前面加N:";将表情符号/表情符号添加到SQL Server表

powershell中的1个表情符号是2个utf16代理字符,因为它的代码对于16位来说太高了。代理和补充字符

'  '.length
2

微软已经做出了";unicode";这是一个令人困惑的术语,因为这就是他们所说的utf16le编码。

Powershell 5.1无法自动识别utf8无bom编码的脚本。

我们不知道您的命令行实际上是什么,但也请参阅:PowerShell 中对Invoke-Sqlcmd的Unicode支持

最新更新