2013-02-02 196 views
1

我想[我]需要在C#中使用自定义字符集做base 64编码,但我不知道如何。Base64编码与自定义字符集

具体来说,我试图在Unity3D项目中使用Mixpanel HTTP规范 - https://mixpanel.com/docs/api-documentation/http-specification-insert-data。 Mixpanel说它具有Base64编码的自定义“风味”,事实上,当我使用允许指定字符集(http://www.motobit.com/util/base64-decoder-encoder.asp)的Web服务编码相同的JSON时,Mixpanel报告成功。

(因此,我知道失败是在编码,没有编码中的数据)

+0

它使用相同的编码.NET。也许填充,试试这个:http://stackoverflow.com/a/12963614/17034 –

+0

我编辑过你的标题。请参阅:“[应该在其标题中包含”标签“](http://meta.stackexchange.com/questions/19190/)”,其中的共识是“不,他们不应该”。 –

回答

-1

因为它是编码为Base64,而是被用于网络,是基于它的自定义设置。见: C# Byte[] to Url Friendly String

编辑:也许不是......看起来他们允许'+'和'/'。奇怪。

+0

HI WALLY。不知何故,我从来没有注意到你回答这个问题,并且在我问了一天之后! – Narfanator

0

页面为URL提供的示例与JSON结构的示例不匹配。

这里是一个工作示例:

var json = "{\"event\": \"game\", \"properties\": {\"ip\": \"123.123.123.123\", \"token\": \"e3bb4100330c35722740fb8c6f5abddc\", \"time\": 1245613885, \"action\": \"play\"}}"; 

var result = Convert.ToBase64String(Encoding.UTF8.GetBytes(json)); 

// result == "eyJldmVudCI6ICJnYW1lIiwgInByb3BlcnRpZXMiOiB7ImlwIjogIjEyMy4xMjMuMTIzLjEyMyIsICJ0b2tlbiI6ICJlM2JiNDEwMDMzMGMzNTcyMjc0MGZiOGM2ZjVhYmRkYyIsICJ0aW1lIjogMTI0NTYxMzg4NSwgImFjdGlvbiI6ICJwbGF5In19"