2017-12-25 17 views
1

SQLサーバーからのデータを処理するスクリプトを作成しました。このデータはアラビア語のいくつかの項目の名前を持っています&英語と私は不明な文字を取得し、フレームの結果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スタジオビューアに正しく表示されず、data.frame自体に正しく保存されることがあります。

あなたのDFが正しく値を保存しているかどうかを確認するには - R-Studioのコンソールからデータフレーム "DF"を呼び出すことができるので、コンソール自体に表示されます。少なくとも、キャラクターのコードのコーディングが正しく表示されました。

結論として、これは単にr-studioの "アーティファクト"と見ることができます。

もしそうでなければ、Rのsqlからインポートした後の値の再コードが必要かもしれませんが、ここでは十分な経験がありません。多分これは役立つかもしれない:Link to base-R converter

敬具

セバスチャンが

+0

はい私は結果を表示するためにr-studioを使用していますが、Visual Studioも試しましたが、同じ問題が発生し、コンソールで結果を表示しようとしましたが、同じ問題が発生します。 – Believer

+1

オハイオ州 - うーん、いくつかのオプションがあります - 私はSQLデータベースに関する経験はありませんが、私はこれをすべて慎重に言っています。または、最後のDFで "行"と "col"という名前の列を再コード化します。あなたのシステムはどのような言語ですか?あなたは次のコマンドを試すことができますか? RのsessionInfo? –

+0

質問を編集した後、私の問題を解決するのに役立つことができますか? – Believer

関連する問題