特殊字符转换为 ?使用 R 插入 Oracle 数据库时
Special Characters are Converted to ? When Inserting into Oracle Database Using R
我正在使用 ROracle 包和 DBI 包连接到 oracle 数据库。当我尝试执行具有特殊字符的插入语句时,特殊字符被转换为非特殊字符。 (我确信 "special" 和 "non-special" 还有更多我不知道的正确术语)。
首先我建立如下联系:
connection <- dbConnect(
dbDriver("Oracle"),
username = "xxxxx",
password = "xxxxx",
dbname = "xxxx"
)
然后我在我已经创建的 table 上执行以下插入语句。 A 列的类型为 nvarchar2。
dbSendQuery(connection, "insert into TEST_TABLE (A) values('£')")
这是返回的内容:
Statement: insert into TEST_TABLE (A) values('#')
Rows affected: 1
Row count: 0
Select statement: FALSE
Statement completed: TRUE
OCI prefetch: FALSE
Bulk read: 1000
Bulk write: 1000
如您所见,“£”符号被“#”取代。我可以直接在 PL/SQL 中执行插入语句,没有问题,所以这似乎是 R 的问题。感谢任何帮助。
这已由 运行 Sys.setenv(NLS_LANG = "AMERICAN_AMERICA.AL32UTF8")
在创建连接之前解决。
我正在使用 ROracle 包和 DBI 包连接到 oracle 数据库。当我尝试执行具有特殊字符的插入语句时,特殊字符被转换为非特殊字符。 (我确信 "special" 和 "non-special" 还有更多我不知道的正确术语)。
首先我建立如下联系:
connection <- dbConnect(
dbDriver("Oracle"),
username = "xxxxx",
password = "xxxxx",
dbname = "xxxx"
)
然后我在我已经创建的 table 上执行以下插入语句。 A 列的类型为 nvarchar2。
dbSendQuery(connection, "insert into TEST_TABLE (A) values('£')")
这是返回的内容:
Statement: insert into TEST_TABLE (A) values('#')
Rows affected: 1
Row count: 0
Select statement: FALSE
Statement completed: TRUE
OCI prefetch: FALSE
Bulk read: 1000
Bulk write: 1000
如您所见,“£”符号被“#”取代。我可以直接在 PL/SQL 中执行插入语句,没有问题,所以这似乎是 R 的问题。感谢任何帮助。
这已由 运行 Sys.setenv(NLS_LANG = "AMERICAN_AMERICA.AL32UTF8")
在创建连接之前解决。