2017-12-25 10 views
1

SQL 서버에서 가져온 데이터를 처리하는 스크립트를 만들었습니다.이 데이터의 이름은 아랍어 & 영어로 여러 항목이고 영어로는 알 수없는 문자가 있고 데이터 기호에는 (???) frame result as enter image description here 그리고 나는 DBMSencoding=utf-8을 사용하여 인코딩을 "UTF-8"로 cjhange하려했지만 동일한 결과를 얻습니다. 어느 누구도이 문제를 해결하는 데 도움이 될 수 있습니까?데이터 프레임 결과에서 알 수없는 문자 가져 오기

`

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) 

`

sessionInfo() : R 버전 3.4.3 (2017년 11월 30일) 플랫폼 : x86_64에-W64-mingw32 이 내 코드입니다/x64 (64 비트) 실행 : Windows 10 x64 (빌드 16299)

매트릭스 제품 : 기본값

로캘 : 1 LC_COLLATE = English_United States.1252 LC_CTYPE = English_United States.1252 LC_MONETARY = English_United States.1252 LC_NUMERIC = C [5] LC_TIME = English_United States.1252 네가

+1

'sessionInfo()'를 입력하고 귀하의 질문에 "로케일"에 대한 부분을 붙여주세요. – G5W

답변

1

r-studio를 사용하여 data.frame을 표시 하시겠습니까? 만약 내가 경험을했다면, 때로는 특수 문자가 r-studio viewer에 올바르게 표시되지 않지만 data.frame 자체에 올바르게 저장된다는 것입니다.

DF에 값이 올바르게 저장되어 있는지 확인하려면 R-Studio의 콘솔을 통해 데이터 프레임 "DF"를 호출하여 콘솔 자체에 출력되도록 할 수 있습니다. 적어도 문자 vars의 코딩이 올바르게 표시되었습니다.

결론적으로 이것은 r-studio의 "인공물"을 볼 수 있습니다.

그렇지 않은 경우 R에서 sql에서 가져온 값을 다시 코딩해야 할 수도 있습니다. 그러나 여기에는 충분한 경험이 없습니다. 어쩌면이 도움이 될 수 Link to base-R converter

안부

세바스챤

+0

예 결과를 표시하는 데 r-studio를 사용하고 있지만 Visual Studio를 사용해도 동일한 문제가 발생하며 콘솔에서 결과를 보려고했지만 동일한 문제가 발생합니다. – Believer

+1

좋습니다 - 다음 몇 가지 다른 옵션이 있습니다 - 나는 SQL 데이터베이스에 대한 경험이 없지만 가져 오기 전에 SQL에서 문제를 해결할 수있는 문자를 모두 코딩 할 때주의해야합니다. 또는 최종 DF에서 "행"및 "열"이라는 열을 다시 코딩하십시오. 시스템에서 사용하는 언어는 무엇입니까? 다음 명령을 사용해 볼 수 있습니까? sessionInfo in R? –

+0

내 질문을 편집 한 후 내 문제를 해결할 수 있습니까? – Believer

관련 문제