sql-server - SQL Server、SCSU 以及如何判断字符串何时未压缩?
问题描述
SQL Server 2008+ 使用SCSU压缩进行页面和行压缩,如docs.microsoft和blogs.msdn中所述 但目前尚不清楚如何确定数据库中的字符串是否压缩。例如 NChar(20) 字段包含压缩值
German "Öl fließt": D66C20666C6965DF74
Russian "Москва": 129CBEC1BAB2B0
和未压缩的
Japanese " ♪リンゴ可愛いや可愛いやリンゴ。半": 00306A26EA30F330B430EF531B6144308430EF531B6144308430EA30F330B43002304A53
Korean "향찰/鄕札 구결/口訣 이두/吏讀": A5D530CC2F0015912D6720006CADB0AC2F00E353238A200074C750B42F000F545AF9
我一直在寻找任何迹象表明价值是否被压缩,但找不到任何迹象。SCSU 实施失败,没有任何东西可以识别未压缩的 Unicode。如何判断它是 SCSU 压缩的还是里面的纯 Unicode?
解决方案
解决方案很简单:如果数组中的字节数奇数 - 它被压缩,如果偶数 - Unicode。如果压缩但字节数即使如此,服务器也会在末尾添加无意义的字节,例如什么都不做的 SCSU 标签。
推荐阅读
- python - 在给定点获取纹理颜色的问题
- ruby - 模拟 ctrl+c 按下 / 发送 'SIGINT' 到子进程
- c++ - 让我对 Postman 的 HTTP 响应缺少什么(使用 C++ boost::asio)
- operators - Verilog >> 运算符的语义应用于网络
- java - 是否可以在 Java 中创建一个函数来检测传递给它的任何参数是否为空?(可变参数)
- javascript - 如何改进此元音计数器功能以提高效率?
- python - 使用 python 创建一个机器人以在上午 9:00、上午 10:00 等单击下载按钮
- git - 由于 .vs 文件被覆盖而无法合并?
- c# - 使用 Bluno Nano (DFR0296) 的 Arduino 和 C# 连接
- c# - EF-Core 单一部署;多个数据库;迁移