Kodi API中的非英文字符

时间:2016-03-06 22:27:51

标签: c# json httpwebrequest kodi

我正在使用Kodi API,通过asp.net控制我的htpc。 特别是名为" Playlist.Add"的功能。 我发送的Json是这样的:

{"jsonrpc":"2.0","method":"Playlist.Insert","params":{"playlistid":0,"position":0,"item":{"file":"smb://server/Ferry Corsten/Beautiful/Ferry Corsten - Beautiful (Extended).mp3"}},"id":1}

这很好用。但是当字符串中没有一些英文字符时,这样:

{"jsonrpc":"2.0","method":"Playlist.Insert","params":{"playlistid":0,"position":0,"item":{"file":"smb://server/01-Zum Geburtstag viel Glück.mp3"}},"id":1}

它只是抛出一个" RequestCanceled"异常。

我的c#来源是这样的:

HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(_url);
                string authInfo = Convert.ToBase64String(Encoding.Default.GetBytes(_username + ":" + _password));
                webRequest.Headers["Authorization"] = "Basic " + authInfo;

                webRequest.Method = "POST";
                webRequest.UserAgent = "KodiControl";
                webRequest.ContentType = "application/json";

                webRequest.ContentLength = json.Length;
                using (var streamWriter = new StreamWriter(webRequest.GetRequestStream()))
                {
                    streamWriter.Write(json);
                    streamWriter.Flush();
                    streamWriter.Close();
                }

异常发生在streamWriter.Flush()。 那么我该怎么做才能发送这个请求呢?``

1 个答案:

答案 0 :(得分:0)

我建议你研究一下Kodi addon unicode paths 遵循该指南将帮助您防止Kodi中非拉丁字符的常见问题。

Python仅在内部使用unicode字符串,在输出时转换为特定编码。 (或输入)“。要默认使字符串文字为unicode,请添加

from __future__ import unicode_literals

插件路径

path = addon.getAddonInfo('path').decode('utf-8')

.decode('utf-8')告诉kodi使用utf-8解码给定的函数。 Kodi的getAddonInfo返回一个UTF-8编码的字符串,我们将其解码为unicode。

浏览对话框

dialog = xbmcgui.Dialog()
directory = dialog.browse(0, 'Title' , 'pictures').decode('utf-8')

dialog.browse()返回一个UTF-8编码的字符串,其中可能包含一些非拉丁字符。因此将其解码为unicode!