相关疑难解决方法(0)

如何检查文件是否是gzip压缩的?

我有一个C/C++程序需要读取一个文件,该文件可能是也可能不是gzip压缩的.我知道我们可以使用zlib中的gzread()读取压缩文件和未压缩文件 - 但是,如果文件是gzip压缩的,我只想使用zlib函数(出于性能原因).

那么有没有办法以编程方式检测或检查某个文件是否是从C/C++中删除的?

c c++ file-io gzip zlib

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

在Windows应用商店应用中使用httpclient获取UTF-8响应

我正在构建一个Windows应用商店应用,但我坚持从API获取UTF-8响应.

这是代码:

using (HttpClient client = new HttpClient())
{
    Uri url = new Uri(BaseUrl + "/me/lists");

    HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, url);
    request.Headers.Add("Accept", "application/json");
    HttpResponseMessage response = await client.SendRequestAsync(request);
    response.EnsureSuccessStatusCode();

    string responseString = await response.Content.ReadAsStringAsync();

    response.Dispose();
}
Run Code Online (Sandbox Code Playgroud)

reponseString总是包含奇怪的字符应该是像口音é,我试图使用流,但我在一些例子中发现的API无法在Windows RT存在.

编辑:改进代码,仍然是同样的问题.

.net c# utf-8 character-encoding windows-runtime

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

压缩和utf8编码

谁能告诉我为什么我在这个过程中丢失信息?有些utf8字符似乎没有被解码: "Biography":"\u003clink type=...或者Steve Blunt \u0026 Marty Kelley 其他人做:"Name":"??

// Creating a 64bit string containing gzip data
string bar;
using (MemoryStream ms = new MemoryStream())
{
    using (GZipStream gzip = new GZipStream(ms, CompressionMode.Compress))
    using (StreamWriter writer = new StreamWriter(gzip, System.Text.Encoding.UTF8))
    {
        writer.Write(s);
    }
    ms.Flush();
    bar = Convert.ToBase64String(ms.ToArray());
}

// Reading it
string foo;
byte[] itemData = Convert.FromBase64String(bar);
using (MemoryStream src = new MemoryStream(itemData))
using (GZipStream gzs = new GZipStream(src, CompressionMode.Decompress))
using (MemoryStream dest = new MemoryStream(itemData.Length*2))
{
    gzs.CopyTo(dest); …
Run Code Online (Sandbox Code Playgroud)

c# encoding utf-8

6
推荐指数
1
解决办法
2805
查看次数

推送到 SQS 时的 AWS SNS 元数据

我正在使用.net sdk将消息推送到SNS,然后SNS将消息发布到订阅的SQS队列,但是SNS添加了元数据,例如消息类型等,并且我最终得到了我不想要的更大的JSON负载,尤其是当SQS受到限制时每条消息 256k。

是否可以向 SNS 发送命令并告诉它不要发送该元数据?

这是代码:

var credentials = new StoredProfileAWSCredentials("dev");

using (var client = new AmazonSimpleNotificationServiceClient(credentials, Amazon.RegionEndpoint.EUWest1))
{
    var request = new PublishRequest();
    request.Message = message;
    request.TargetArn = "ARN";

    var response = client.Publish(request);
    // return response;
}
Run Code Online (Sandbox Code Playgroud)

这是 SNS 推送到 SQS 的内容:

{  
   "Type":"Notification",
   "MessageId":"3333333",
   "TopicArn":"ARN",
   "Message": {
       "Id":45,
       "MessageId":"a871f8d7-7091-4548-87c5-da3bb4131044",
       "Payload": {
           "Internalid":"a7c50558-fc9c-47a6-b0ed-cb0cf5020f55",
           "MessageId":"a871f8d7-7091-4548-87c5-da3bb4131044",
           "TravelersName":"aaa aaaa",
           "TravelersEmail":"aaa@aa.com",
           "OwnersEmail":null,
           "AccommodationId":1,
           "BookingCode":"a523cd07-5506-48ad-9380-2e94002722e0"
       },
       "EventName":"BookingRecordCreated",
       "CreatedOnUtc":"2016-09-26T15:14:55.437",
       "HandledOnUtc":null
    },
    "Timestamp":"2016-09-26T15:14:50.923Z",
    "SignatureVersion":"1",
    "Signature":"dfgdfg///==",
    "SigningCertURL":"https://sns",
    "UnsubscribeURL":"https://sns."
}
Run Code Online (Sandbox Code Playgroud)

这就是我发布到 SNS 的内容

"Message":{
   "Id":45,
   "MessageId":"a871f8d7-7091-4548-87c5-da3bb4131044",
   "Payload": …
Run Code Online (Sandbox Code Playgroud)

.net c# amazon-sqs amazon-web-services amazon-sns

6
推荐指数
1
解决办法
6266
查看次数

在UWP中接收来自HttpClient的响应时的错误编码

我正在制作uwp(通用Windows平台)应用程序,并希望将这个xml:http://radioa24.info/ramowka.php反序列化为对象,但我得到的是scpecial字符,如ł,ó一些奇怪的字母和特殊的字母,如: \n和\ r:"Ä..."=>"±""ć"=>"ć""Ä™"=>"ę"例如Poniedzia?ek我没有得到PoniedziaÅ\u0082ek

我的代码:

var httpClient = new HttpClient();
var response = await httpClient.GetAsync(uri).AsTask();
response.EnsureSuccessStatusCode();
var result = await httpResponse.Content.ReadAsStringAsync();
Run Code Online (Sandbox Code Playgroud)

我试图做一些编码转换,但没有任何成功.如何解决它,因为后来我想得到我的对象?

var reader = new XmlSerializer(typeof(Sources.Schedule));
using (var tr = new MemoryStream(Encoding.UTF8.GetBytes(resultString)))
{
   Schedule = (Sources.Schedule)reader.Deserialize(res);
}
Run Code Online (Sandbox Code Playgroud)

c# xml rest encoding uwp

5
推荐指数
2
解决办法
3723
查看次数

将二进制文件字节数组发送到 web api 方法

我需要将大小为 100MB 的二进制文件以 JSON 或字节数组的格式发布到 Web API 1.1。我的客户端应用程序是具有 x32 位架构的 C# winforms 应用程序。因为我想从这个客户端应用程序读取二进制文件并将这个二进制文件字节数组发送到 Web API。

我的 winforms 应用程序中的当前实现如下

var sFile = @"C"\binary.zip";
var mybytearray = File.ReadAllBytes(sFile);
var webRequest =
                (HttpWebRequest)WebRequest.Create("http://localhost/filewriter");
webRequest.ContentType = "text/plain";
webRequest.Method = WebRequestMethods.Http.Post;
webRequest.AllowWriteStreamBuffering = true;
webRequest.Timeout = 100000;
webRequest.Headers.Add("fileName", Path.GetFileName(sFile));
webRequest.ContentLength = mybytearray.Length;

using (var dataStream = new StreamWriter(webRequest.GetRequestStream()))
      dataStream.Write(mybytearray);

using (var response = webRequest.GetResponse())
{
    if(response.StatusCode = HttpStatusCode.Ok;
         return true;
}
Run Code Online (Sandbox Code Playgroud)

下面是用我的 Web api 方法编写的

[HttpPost]
public HttpResponseMessage filewriter(byte[] binaryData)
{
    using (FileStream binaryFileStream = …
Run Code Online (Sandbox Code Playgroud)

c# httpwebrequest winforms asp.net-web-api

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

加载文件不起作用 - GZip标头中的幻数不正确

我正在尝试创建一个Save/Load类,它具有保存和加载文件压缩文件的选项.以下是我到目前为止的情况.单步执行它似乎工作得很好,除了我得到"GZip标头中的幻数不正确"异常.我不明白这是怎么回事,因为我检查确保数字在我传递之前存在,并且我已经通过外部程序验证它是GZip文件.

任何协助找出我出错的地方将不胜感激.对我的代码的建设性批评总是受欢迎的 - 谢谢!

public static class SaveLoad
{
    public static void Save(string fileName, object savefrom, bool compress)
    {
        FileStream stream = new FileStream(fileName, FileMode.Create);

        BinaryFormatter formatter = new BinaryFormatter();
        if (compress)
        {
            GZipStream compressor = new GZipStream(stream, CompressionMode.Compress);
            formatter.Serialize(compressor, savefrom);
            compressor.Close();
        }
        else { formatter.Serialize(stream, savefrom); }

        stream.Close();
    }

    public static object Load(string fileName)
    {
        object loadedObject = null;

        try
        {
            FileStream stream = new FileStream(fileName, FileMode.Open);

            BinaryFormatter formatter = new BinaryFormatter();

            if (stream.Length > 4)
            {
                byte[] data …
Run Code Online (Sandbox Code Playgroud)

c# serialization gzip binaryformatter deserialization

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

我可以在包含 NVARCHAR(MAX) 字段的表上放置聚集列存储索引吗?

我在 SQL Server 2016 中有一个包含 200 GB 数据的表。所以我计划在该表中应用 Clustered ColumnStore 以进行磁盘压缩以及更好的性能。

但问题是在该表下有一个数据类型为 NVARCHAR(MAX) 的列,并且列存储索引不支持该数据类型。

所以我的想法是将数据类型从 NVARCHAR(max) 更改为任何其他至少接受同一列中 81446 个字符的数据类型。

我尝试了 SQL 中可用的其他一些数据类型,如 VARCHAR(8000) 但它所做的是删除了 8000 个字符之后的其他数据。

我也试过文字。但同样在 Text 中,由于限制,列存储不适用。

所以你能告诉我我必须使用什么数据类型吗?或者有没有其他方法可以在同一个表中应用 ColumnStore 索引?

sql sql-server sql-server-2016

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

在c#中压缩和解压缩字符串

我知道有system.io.compression.gzipstream但它接受一个流作为参数.

我正在寻找一种接受字符串的方法

例如.

string compress(string stringtocompress,compressionlevel level);
string decompress(string stringtodecompress);
Run Code Online (Sandbox Code Playgroud)

compression asp.net zip

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

如何在Python中压缩或压缩字符串

我正在制作一个python"脚本",它将一个字符串发送到一个web服务(在C#中).我需要压缩或压缩这个字符串,因为带宽和MB数据是有限的(是的,在大写字母,因为它非常有限).

我在考虑将其转换为文件,然后压缩文件.但我正在寻找一种直接压缩字符串的方法.

如何压缩或压缩字符串?

python compression string stream-compaction

2
推荐指数
2
解决办法
5575
查看次数