`
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
您正在使用r-studio显示data. frame?如果是这样,我的经验是,有时特殊字符不能正确显示在r-studio查看器中,但会正确保存在data.frame本身中。
要检查您的DF是否正确保存值-您可以通过R-Studio中的控制台调用您的数据帧“DF”,因此它会在控制台本身中打印出来-我发现,至少在我的情况下,字符变量的编码显示正确。
所以总而言之,这可能只是r-studio的一个观看“人工制品”。
如果没有,也许需要在R中从sql导入后重新编码值-但在这里我没有足够的经验。也许这可能会有所帮助:链接到base-R转换器
最好的问候
塞巴斯蒂安
我通过以下步骤解决了这个问题:
odbc
包并将dbGetQuery
Fun的编码
参数分配给“Windows-1256”
LC_ALL
的Sys. setlocale
设置为'阿拉伯语',完成这两个步骤后,我解决了这个问题