Serializing C # objects with JavaScriptSerializer creates invalid bytes in UTF8 string

I am serializing a C # object with the following code:

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

      

Tried serialization with Target Frameworks from 4.5 to 4.6.1.

Then I try to deserialize it to 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) ------^

      

I guess it is microliter. What is the best way to handle these special characters?

Thank.

+3


source to share


1 answer


The main hint from Sergei: "If you output it to the console, well ... it might be broken."

Using File.WriteAllText solves the problem:



            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);

      

0


source







All Articles