小编jwh*_*h20的帖子

具有8位ASCII数据的LINQ到实体

我有一个有趣的问题,处理LINQ到实体中的8位"ASCII"字符,我希望有人可以给我一个提示.

我继承了一个SQL Server 2000数据库,它有一些伪加密列,它们只是对字符串进行异或0xFF.不知道为什么,我知道它是蹩脚的,但那就是我们现在所处的位置.

这些列是SQL数据类型char(7)char(14).使用XOR时,0xFF在每种情况下都会设置第8位,因此最终会得到非ASCII(通过Microsoft的定义)字符.似乎在这里指出了UTF-8,但是解码变得混乱了.

我能够读取和解码这些字符串如下:

  1. 使用LINQ作为一个领域String.
  2. 获得byte[]使用System.Text.Encoding.GetEncoding(1252).GetBytes()
  3. 通过对每个字节进行异或来解码 0xFF
  4. 返回解码后的字符串 System.Text.Encoding.GetEncoding(1252).GetString()

这非常有效.

我遇到的问题是我似乎无法使用LINQ将ENCODED字符串放回SQL Server.

我基本上遵循相反的过程并且正在做:

  1. 获取字节使用ASCIIEncoding.GetBytes().(此处不需要CodePage 1252,因为这是一个直字符串.)
  2. 使用编码字节0xFF.
  3. 返回编码的字符串GetEncoding(1252).GetString().

如果我看看我的字符串,这正是我所期待的.但是,如果我在我的实体中填充并SaveChanges()在SQL Server中执行结果值总是"?????"有一定的长度.

我确定我在这里遗漏了一些东西,但我已经尝试了所有我能想到的东西,却无法得到它.现在我只是回到了使用a SqlCommand和使用编码字符串进行UPDATE 的老式方法SqlParameters.没问题,每次都有效.

在此先感谢您的任何帮助.


更新:

我尝试了JamieSee的建议,我甚至没有用他的方法得到很好的解码.我有:

    static void Main(string[] args)
    {
        Encoding characterEncoding = Encoding.GetEncoding(28591);

        HCBPWEBEntities ent = new HCBPWEBEntities();

        var encUser =
            (from users in ent.tblEmployer
            where users.ipkEmpId == 357
            select …
Run Code Online (Sandbox Code Playgroud)

linq entity-framework utf-8 codepages non-ascii-characters

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

AWS ECS Fargate 中的 docker cap-add

我在创建需要 docker“-cap-add”运行时选项的 AWS ECS Fargate 类型任务时遇到问题。AWS 文档对于此功能似乎不完整或含糊不清。

我的容器需要安装 CIFS 文件系统,当我在 Docker 中运行它时,我使用以下命令:

docker run --cap-add SYS_ADMIN --cap-add DAC_READ_SEARCH -it alpine-cifs-python sh

它按预期工作。AWS文档似乎表明各种文档都支持“功能”。例如以下内容:

AWS Linux参数

说:

如果您使用的任务使用 Fargate 启动类型,则支持功能,但不支持下面描述的添加参数。

因此支持“功能”,但不支持“添加”。目前尚不清楚这意味着什么,我已经在 CloudFormation YAML 中尝试了任意数量的组合,但没有一个在不抛出错误的情况下工作。

我一直在处理这样的事情:

  LinuxParameters:
    Capabilities: 
      Add:
        - SYS_ADMIN
        - DAC_READ_SEARCH
      #KernelCapabilities:
        #- 'SYS_ADMIN'
        #- 'DAC_READ_SEARCH'
Run Code Online (Sandbox Code Playgroud)

但当我尝试部署时,这会返回错误:

Fargate 不允许添加 Linux 功能。(服务:AmazonECS;状态代码:400;错误代码:ClientException;请求 ID:f7368ec6-38a6-4a0b-b8ec-7eb078ea5367)

如果我省略“添加”参数,我会得到:

属性 Capability 的值必须是一个对象

我尚未成功找到任何有关如何在 Fargate ECS 任务中实现“功能”的示例。

我缺少什么?谢谢!

amazon-web-services amazon-ecs aws-cloudformation dockerfile aws-fargate

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