C# .net Core 和 Oracle 设置编码

在 web-api 项目中,.Net Core已Oracle通过以下方式连接到数据库dotNetCore.data.OracleClient (nugget package)


我从流水线函数中读取数据,如下所示:


 using (DbConnection connection = new OracleConnection("oraclecs")) {

    connection.Open();


    using (var cmd = connection.CreateCommand()) {

      cmd.CommandType = CommandType.Text;


      cmd.CommandText = "select name from Table(SCHEMA.PACKAGE.FUNC(PARAM1=>1,PARAM2=>4))";


      DbDataReader er = cmd.ExecuteReader();

      while (er.Read()) {

        string Name = er.GetValue(er.GetOrdinal(name: "name")).ToString();

      }

      connection.Close();

    }

  }

俄语数据库编码的数据库中的名称NLS_CHARACTERSET是CL8MSWIN1251


当我从字段中获得价值时,name我看到 ???????? 而不是真实姓名


也只是select在命令文本中通过Oracle SQL Developer返回正确的数据


什么可以帮助我解决它?


忽然笑
浏览 246回答 1
1回答

牛魔王的故事

我的 .net Core web-api 在 docker 中运行我在文件 docker-compose.override.yml 中设置了 NLS_LANG=.CL8MSWIN1251 这对我有帮助我的 docker-compose.override.yml 文件:version: '3'services:  api:    environment:      - ASPNETCORE_ENVIRONMENT=Development      - ORACLE_CS=Data Source = ip:port/sid;PERSIST SECURITY INFO=True;USER ID=user; Password=password;      - NLS_LANG=.CL8MSWIN1251    ports:      - "5050:80"networks:  default:    external:      name: nat
打开App,查看更多内容
随时随地看视频慕课网APP