提问者:小点点

获取数据帧结果中的未知字符


`

dbConnection <- "Driver={SQL Server};Server=.;Database=****;Uid=******;Pwd=****;DBMSencoding=utf-8"
con <- odbcDriverConnect(connection = dbConnection)
Orders <- sqlQuery(con, "SELECT 
                   DOC.ID AS [Transaction]
                   ,CASE
                   WHEN DOCD.ServiceItemID IS NOT NULL 
                   THEN dbo.RemoveNumericCharacters(CONVERT(NVARCHAR (MAX),SRI.Description))
                   WHEN DOCD.StockItemID IS NOT NULL 
                   THEN dbo.RemoveNumericCharacters(CONVERT(NVARCHAR (MAX),STI.Description))  
                   END AS Item
                   ,CASE
                   WHEN  DOCD.ServiceItemID IS NOT NULL
                   THEN 'ServiceItem'
                   WHEN DOCD.StockItemID IS NOT NULL
                   THEN 'StockItem'
                   END AS [ItemType]
                   FROM Sales.Sls_Documents DOC
                   INNER JOIN Sales.Sls_DocumentDetails DOCD
                   ON DOCD.DocumentID = DOC.ID
                   LEFT  JOIN Sales.Sls_ServiceItems SRI
                   ON SRI.ID = DOCD.ServiceItemID
                   LEFT JOIN Warehouse.StockItems STI
                   ON STI.Id = DOCD.StockItemID
                   WHERE CASE
                   WHEN DOCD.ServiceItemID IS NOT NULL 
                   THEN SRI.Description
                   WHEN DOCD.StockItemID IS NOT NULL
                   THEN STI.Description
                   END IS NOT NULL")
Orders$Item <- as.character(Orders$Item)

`

session sionInfo(): R版本3.4.3(2017-11-30)平台:x86_64-w64-mingw32/x64(64-bit)运行于:Windows 10 x64(build 16299)

矩阵产品:默认

地区: 1LC_COLLATE=English_UnitedLC_CTYPE=English_UnitedLC_MONETARY=English_UnitedLC_NUMERIC=C[5]LC_TIME=English_United


共2个答案

匿名用户

您正在使用r-studio显示data. frame?如果是这样,我的经验是,有时特殊字符不能正确显示在r-studio查看器中,但会正确保存在data.frame本身中。

要检查您的DF是否正确保存值-您可以通过R-Studio中的控制台调用您的数据帧“DF”,因此它会在控制台本身中打印出来-我发现,至少在我的情况下,字符变量的编码显示正确。

所以总而言之,这可能只是r-studio的一个观看“人工制品”。

如果没有,也许需要在R中从sql导入后重新编码值-但在这里我没有足够的经验。也许这可能会有所帮助:链接到base-R转换器

最好的问候

塞巴斯蒂安

匿名用户

我通过以下步骤解决了这个问题:

  1. 我使用odbc包并将dbGetQueryFun的编码参数分配给“Windows-1256”
  2. LC_ALLSys. setlocale设置为'阿拉伯语',完成这两个步骤后,我解决了这个问题在这里输入图像描述