R スクリプト内で壊れたパイプを処理するときに、SQL Server 2016 の奇妙な動作を発見しました。以下の T-SQL コードを参照してください。
DECLARE
@r nvarchar(100)
/* Create a data frame with a broken pipe as one of its fields and a simple ASCII encoded string in another. */
SET @r = N'
df <- data.frame(
a = "¦",
b = "a,b,c"
)';
/* Print @r to detect the inclusion of any unwanted characters. */
PRINT @r;
/* Execute and retrieve the output. */
EXECUTE sp_execute_external_script
@language = N'R',
@script = @r,
@output_data_1_name = N'df'
WITH RESULT SETS ((
BadEncodingColumn varchar(2),
GoodEncodingColumn varchar(5)
));
PRINT コマンドは、[メッセージ] タブでこれを返します。
df <- data.frame(
a = "¦",
b = "a,b,c"
)
ただし、最終的な [結果] タブは次のようになります。
BadEncodingColumn GoodEncodingColumn
¦ a,b,c
この動作は、スクリプトの EXECUTE sp_execute_external_script フェーズで発生するようで、Excel、R、および SQL Server の他のバージョンで他のエンコードの問題を処理するときに、この文字 (Â) を見たことがあります。
この動作に対する解決策はありますか? そしてボーナスポイント、 Âキャラクターの「特別」とは何ですか?
編集: SQL Server と R 内のデータ型をいじってみましたが、役に立ちませんでした。