将二进制编码为unicode

将二进制编码为unicode,unicode,encoding,Unicode,Encoding,我有一个字节数组,需要存储到nvarcharDB列中。一个nvarchar需要2个字节。什么是最佳编码 理想情况下,我会将N个字节存储到长度为N/2的nvarchar中,但有无效的unicode序列让我担心。最理想的解决方案是将二进制存储在二进制列中。那么你是说在这个次优方案的约束条件下的最佳编码 去base64吧,很安全 如果无法控制输入字节,迟早会遇到编码问题。最佳解决方案是将二进制存储在二进制列中。那么你是说在这个次优方案的约束条件下的最佳编码 去base64吧,很安全 如果无法控制输入字

我有一个字节数组,需要存储到
nvarchar
DB列中。一个
nvarchar
需要2个字节。什么是最佳编码


理想情况下,我会将N个字节存储到长度为N/2的
nvarchar
中,但有无效的unicode序列让我担心。

最理想的解决方案是将二进制存储在二进制列中。那么你是说在这个次优方案的约束条件下的最佳编码

去base64吧,很安全


如果无法控制输入字节,迟早会遇到编码问题。

最佳解决方案是将二进制存储在二进制列中。那么你是说在这个次优方案的约束条件下的最佳编码

去base64吧,很安全


如果无法控制输入字节,迟早会遇到编码问题。

通常Base64是一种好方法,但您可能只使用Unicode代码点

Unicode代码点的范围从0到10FFFF,但您可以轻松高效地将2个半字节编码到Unicode代码点中。根据您的要求,您可以将所有代码点移位128,这样您就有了ASCII作为边界(并且您不需要担心字节0,并且仍然有足够的代码点用于20位二进制数据(每个代码点)。[或者可能只是将0转义为0x10000]


这是通用的,用于Unicode(所以是通用的Unicode)。如果您知道编码(例如UTF-8,您可以选择不同的编码)。

通常Base64是一种好方法,但您可以只使用Unicode代码点

Unicode代码点的范围从0到10FFFF,但您可以轻松高效地将2个半字节编码为一个Unicode代码点。根据您的要求,您可以将所有代码点移位128,这样您就可以使用ASCII作为边界(并且您不必担心字节0,您仍然有足够的代码点来存储20位二进制数据)(每个代码点)。[或者将0转义为0x10000]


这是通用的,用于Unicode(所以是通用的Unicode)。如果您知道编码(例如UTF-8,您可以选择不同的编码)。

是的,我有规定的限制。使用base64是安全的,而不是空间最优的。“使用base64是安全的,而不是空间最优的”-或者,您可以简单地使用另一种二进制到文本编码。例如,它比base64更节省空间。但是有其他二进制到文本编码可供您使用>,但有其他二进制到文本编码可供您使用@RemyLebeau。这正是我的问题。还有什么其他编码?我不知道是的。如果这是一个答案,我会接受。是的,我有规定的限制。去base64是安全的,不是空间最优。“去base64是安全的,不是空间最优的”-或者,您可以简单地使用另一种二进制到文本编码。例如,它比base64更节省空间。但是有其他二进制到文本编码可供您使用>,但有其他二进制到文本编码可供您使用@RemyLebeau。这正是我的问题。还有什么其他编码?我不知道是的。如果这是一个答案,我会接受的。