2017-06-30 75 views
3

無效字節我序列化用下面的代碼一個C#對象:串行化C#對象產生在UTF8字符串

  var serializer = new JavaScriptSerializer(); 
      var serializedResult = serializer.Serialize(rawFile); 
      Console.WriteLine(serializedResult); 
      return; 

使用目標框架試圖從序列化4.5到4.6.1。

然後我試圖反序列化到R:

 > x <- read_json("C:\\dump.txt") 
    Error in parse_con(txt, bigint_as_char) : 
    lexical error: invalid bytes in UTF8 string. 
      ": "Sample pickup:\nVolume [æl]   :  1.00\nFlow [æl 
         (right here) ------^ 

我猜測,這些是微升。如何最好地處理這些特殊字符?

謝謝。

+0

你試圖使用Newtonsoft JSON轉換器? – Michael

+1

如何將您的UTF-8字符串從C#移動到R?如果你輸出到控制檯,那麼......它可以被打破。 (也是C#'String's不是UTF-8,所以如果你想獲得UTF-8字節,你需要利用方法,如果我的內存好的話,可以使用'Encoding'類)。 –

+1

所以_imho_ _probably_它不是在C#中產生錯誤的UTF-8位的序列化程序。 –

回答

0

最關鍵的提示來自Sergey「如果你輸出到控制檯,那麼......它可以被打破。」

使用File.WriteAllText解決了這個問題:

  JavaScriptSerializer serializer = new JavaScriptSerializer(); 
      string serializedResult = serializer.Serialize(rawFile); 
      // byte[] bytes = Encoding.Default.GetBytes(serializedResult); 
      // string myString = Encoding.UTF8.GetString(bytes); 
      File.WriteAllText("dump2.txt", serializedResult);