我有一个有趣的问题,处理LINQ到实体中的8位"ASCII"字符,我希望有人可以给我一个提示.
我继承了一个SQL Server 2000数据库,它有一些伪加密列,它们只是对字符串进行异或0xFF.不知道为什么,我知道它是蹩脚的,但那就是我们现在所处的位置.
这些列是SQL数据类型char(7)和char(14).使用XOR时,0xFF在每种情况下都会设置第8位,因此最终会得到非ASCII(通过Microsoft的定义)字符.似乎在这里指出了UTF-8,但是解码变得混乱了.
我能够读取和解码这些字符串如下:
String.byte[]使用System.Text.Encoding.GetEncoding(1252).GetBytes()0xFFSystem.Text.Encoding.GetEncoding(1252).GetString()这非常有效.
我遇到的问题是我似乎无法使用LINQ将ENCODED字符串放回SQL Server.
我基本上遵循相反的过程并且正在做:
ASCIIEncoding.GetBytes().(此处不需要CodePage 1252,因为这是一个直字符串.)0xFF.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) 我在创建需要 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文档似乎表明各种文档都支持“功能”。例如以下内容:
说:
如果您使用的任务使用 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