]> granicus.if.org Git - handbrake/commitdiff
WinGui: Fix an issue with non-ASCII characters in the new JSON Scan API. Thanks to...
authorsr55 <sr55.hb@outlook.com>
Fri, 9 Jan 2015 19:30:30 +0000 (19:30 +0000)
committersr55 <sr55.hb@outlook.com>
Fri, 9 Jan 2015 19:30:30 +0000 (19:30 +0000)
https://reviews.handbrake.fr/r/778

git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@6701 b64f7644-9d1e-0410-96f1-a4d463321fa5

win/CS/HandBrake.Interop/HandBrakeInterop/HandBrakeInstance.cs

index 0ed007e53d1ddde027b823d851e4fabdcdac75c3..7a7aaab5c3edad3a37295e33bcb980a2b4078385 100644 (file)
@@ -605,17 +605,18 @@ namespace HandBrake.Interop
                 this.titles = new List<Title>();\r
 \r
                 var jsonMsg = HBFunctions.hb_get_title_set_json(this.hbHandle);\r
-                string scanJson = Marshal.PtrToStringAnsi(jsonMsg);\r
+                // Convert UTF-8 encoded jsonMsg to string\r
+                int length = 0;\r
+                while (Marshal.ReadByte(jsonMsg, length) != 0) length++; // find 0 termination\r
+                byte[] buffer = new byte[length];\r
+                Marshal.Copy(jsonMsg, buffer, 0, buffer.Length);\r
+                string scanJson = Encoding.UTF8.GetString(buffer);\r
+\r
                 JsonScanObject scanObject = JsonConvert.DeserializeObject<JsonScanObject>(scanJson);\r
                 lastScan = scanObject;\r
 \r
                 foreach (Title title in ScanFactory.CreateTitleSet(scanObject))\r
                 {\r
-                    // Convert the Path to UTF-8.\r
-                    byte[] bytes = Encoding.Default.GetBytes(title.Path);\r
-                    string utf8Str = Encoding.UTF8.GetString(bytes);\r
-                    title.Path = utf8Str;\r
-\r
                     // Set the Main Title.\r
                     this.featureTitle = title.IsMainFeature ? title.TitleNumber : 0;\r
 \r