相关疑难解决方法(0)

从C#中的字符串剥离字节顺序标记

我已经阅读了类似的帖子,他们没有回答我的问题.

在C#中,我有一个我从WebClient.DownloadString获取的字符串.我已经尝试将client.Encoding设置为新的UTF8Encoding(false),但这没有任何区别 - 我仍然在结果字符串的开头以UTF-8的字节顺序标记结束.我需要删除它(用LINQ解析生成的XML),并希望在内存中这样做.

所以我有一个以\ x00EF\x00BB\x00BF开头的字符串,如果它存在,我想删除它.现在我正在使用

if (xml.StartsWith(ByteOrderMarkUtf8))
{
    xml = xml.Remove(0, ByteOrderMarkUtf8.Length);
}
Run Code Online (Sandbox Code Playgroud)

但这感觉不对.我已尝试过各种带有流,GetBytes和编码的代码,但没有任何作用.任何人都可以提供"正确"算法从字符串中剥离BOM吗?

谢谢!

c# string encoding

42
推荐指数
9
解决办法
6万
查看次数

Encoding.UTF8.GetString没有考虑Preamble/BOM

在.NET中,我正在尝试使用Encoding.UTF8.GetString方法,它接受一个字节数组并将其转换为string.

看起来这种方法忽略了BOM(字节顺序标记),它可能是UTF8字符串的合法二进制表示的一部分,并将其作为字符.

我知道我可以TextReader根据需要使用a 来消化BOM,但我认为GetString方法应该是某种使我们的代码更短的宏.

我错过了什么吗?这是故意的吗?

这是一个复制代码:

static void Main(string[] args)
{
    string s1 = "abc";
    byte[] abcWithBom;
    using (var ms = new MemoryStream())
    using (var sw = new StreamWriter(ms, new UTF8Encoding(true)))
    {
        sw.Write(s1);
        sw.Flush();
        abcWithBom = ms.ToArray();
        Console.WriteLine(FormatArray(abcWithBom)); // ef, bb, bf, 61, 62, 63
    }

    byte[] abcWithoutBom;
    using (var ms = new MemoryStream())
    using (var sw = new StreamWriter(ms, new UTF8Encoding(false)))
    {
        sw.Write(s1);
        sw.Flush();
        abcWithoutBom = ms.ToArray();
        Console.WriteLine(FormatArray(abcWithoutBom)); // 61, 62, …
Run Code Online (Sandbox Code Playgroud)

.net unicode byte-order-mark character-encoding

25
推荐指数
3
解决办法
9281
查看次数

JSON文本不以数组或对象和选项开头,以允许未设置片段

我正在从服务器发送这个json响应,请求我的IOS 7应用程序.

{
 "root": {
    "success": "1",
    "message": "Successfully retrieved data.",
    "data": {
        "records": [
            {
                "receipt_key": "xxxxxxxx",
                "receipt_id": "xxxxxxxx",
                "store_name": "xxxxxx",
                "amount": "xxxx",
                "date_purchase": "xxxxxxxx",
                "is_processed": "x",
                "created_on": "xxxxxxxx",
                "modified_on": "xxxxxxxx",
                "modified_on_millis": "xxxxxxxx",
                "user_folder": "xxxxxxxx",
                "category_id": "xxxxxxxx",
                "is_deleted": "x",
                "currency_id": "xxxxxxxx"
            }
        ]
    }
}
}
Run Code Online (Sandbox Code Playgroud)

我使用以下代码解析上面的json到NSDictionary对象.

 NSMutableDictionary *json=[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:&error];
Run Code Online (Sandbox Code Playgroud)

但是我在上面的代码中遇到了这个错误.

Error Domain = NSCocoaErrorDomain Code = 3840"操作无法完成.(Cocoa error 3840.)"(JSON文本不是以数组或对象开头,而是选项允许未设置片段.)UserInfo = 0x8a8a700 {NSDebugDescription = JSON text没有从数组或对象和选项开始,以允许未设置片段.}

iphone ios ios7

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

为什么File.ReadAllBytes与使用File.ReadAllText时的结果不同?

我有一个内容为"test"的文本文件(UTF-8编码).我尝试从这个文件中获取字节数组并转换为字符串,但它包含一个奇怪的字符.我使用以下代码:

var path = @"C:\Users\Tester\Desktop\test\test.txt"; // UTF-8

var bytes = File.ReadAllBytes(path);
var contents1 = Encoding.UTF8.GetString(bytes);

var contents2 = File.ReadAllText(path);

Console.WriteLine(contents1); // result is "?test"
Console.WriteLine(contents2); // result is "test"
Run Code Online (Sandbox Code Playgroud)

conents1不同于contents2- 为什么?

c# string byte

9
推荐指数
3
解决办法
7207
查看次数

来自CSV文件的字符串开头的神秘前导"空"字符

在将CSV文件读入数组的过程中,我注意到第一个数组元素,它是一个字符串,包含一个前导"".

例如:

str = contacts[0][0]
p str
Run Code Online (Sandbox Code Playgroud)

给我...

"SalesRepName"

然后我偶然尝试尝试:

str = contacts[0][0].split(//)
p str
Run Code Online (Sandbox Code Playgroud)

那给了我......

["","S","a","l","e","s","R","e","p","N","a","m"," E"]

我已经检查了数组中的每个其他元素,这是唯一一个包含前导""的字符串.

ruby csv byte-order-mark zero-width-space

3
推荐指数
1
解决办法
743
查看次数

为什么我不能从哈希中读取值?

考虑以下代码:

  hash = {"a"=>["B", "C"], "b"=>["C"], "c"=>["D", "E"], "d"=>["F"]}
  puts hash["a"]
Run Code Online (Sandbox Code Playgroud)

这只是打印没有.

puts hash["a"].class
Run Code Online (Sandbox Code Playgroud)

这打印 NilClass

以下ruby版本中是否存在某种已知错误?

ruby 2.0.0p247(2013-06-27修订版41674)[universal.x86_64-darwin13]

我希望有人可以帮助我,这让我发疯.我的IDE是JetBrains的RubyMine.我也尝试通过IRB直接运行它.

谢谢

PS.OS是OSX

ruby hash

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