【问题标题】:c# sqlite encoding utf8时间:2019-04-10 标签:c#sqlite encoding utf8
【发布时间】:2014-01-31 21:18:23
【问题描述】:

我有一个非常奇怪的问题(我已经搜索过 - 这是一个常见问题,但我没有找到任何可行的解决方案)。

我正在使用 C# (.net 4.0) 和 SQLite。 Pragma 编码向我显示 UTF8,所以我想以这种编码保存数据。 我试着用这样的东西:

     private String ToUTF8(string input) {

        Encoding ecdng = Encoding.Default;

        byte[] bts = ecdng.GetBytes(input);
        ecdng = Encoding.UTF8;
        return ecdng.GetString(bts, 0, bts.Length);
        //return input;
    }

    private String FromUTF8(string input)
    {

        Encoding ecdng = Encoding.UTF8;

        byte[] bts = ecdng.GetBytes(input);
        ecdng = Encoding.Default;
        return ecdng.GetString(bts, 0, bts.Length);
        //return input;
    }

但它不起作用。我要保存数据时使用 ToUTF8,选择数据时使用 FromUTF8。

我找到的第二个解决方案是:

        private IDbDataParameter AddParameter(IDbCommand command, string paramName, DbType type, object value)
    {
        IDbDataParameter parameter = command.CreateParameter();
        parameter.ParameterName = paramName;
        parameter.DbType = type;
        if (value != null)
            parameter.Value = value;
        else
            parameter.Value = DBNull.Value;
        command.Parameters.Add(parameter);
        return parameter;
    }

但它也不起作用。

我想在我的数据库中存储波兰语。当我通过 SQLiteStudio 预览数据时,我用奇怪的符号代替了波兰语字母。 在程序中我有同样的问题,但波兰字母上有其他符号。

谁能帮我解决这个问题?

最好的问候, 马特。

【问题讨论】:

  • 数据库驱动程序自动在 UTF-8 和 C# 的String 使用的编码之间进行转换。你不需要在你的代码中做任何事情。
  • 嗨。感谢您的回复,但没有在 c# 上进行任何转换,它仍然无法正常工作。我有数据库吗?在地方,应该是波兰字母..
  • 嗯,我从文件中读取数据时可能有问题?当我打印文件内容时,我也没有波兰字母。我用 read System.IO.File.ReadAllLines(file, Encoding.UTF8);

标签: c# sqlite encoding utf-8


【解决方案1】:

解决了。我从文件中读取数据 - 使用带有 UTF8 编码的 ReadAllLines,当我更改为默认值时,我有波兰字母:)

【讨论】:

    猜你喜欢
    • 2016-04-19
    • 2022-01-16
    • 2018-07-04
    • 2019-06-02
    • 1970-01-01
    • 1970-01-01
    • 2013-05-26
    • 2015-02-10
    • 2013-06-03
    相关资源
    最近更新 更多