Skip to content

Encoding.Default可能导致的问题 #1

@tylerlong

Description

@tylerlong

源码中有如下一段:

private byte[] _bytes(string s) {
    return Encoding.Default.GetBytes(s);
}

private string _string(byte[] bs) {
    return Encoding.Default.GetString(bs);
}

经过测试, 在我的Windows 7系统上, Encoding.Default的值是DBCSCodePageEncoding, 在Ubuntu系统上, Encoding.Default的值是UTF8Encoding.

首先windows上,那个非常不常见的encoding会导致数据丧失可移植性. 把数据拷贝到其它的系统上多半就不能读取了.

再次在不同的系统之间, Encoding.Default的值不同, 这会导致基于这个API编写的代码丧失跨平台性.

我个人感觉不妨直接把encoding定死为UTF8Encoding. 这个编码绝大部分情况下是没有问题的. 另外可以给构造函数加个参数, 允许指定编码.

我自己基于这个api改了很多, 有时间我可能会另外创建一个repo公开我的代码. 目前就先提以上意见, 供参考.

感谢开发维护SSDB!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions