From 567bceb01ffb2579e1a2706427142227fc86e688 Mon Sep 17 00:00:00 2001 From: kitsuy Date: Fri, 24 Nov 2017 20:28:21 +0900 Subject: [PATCH] Addapt default encoding in SQL Server --- app/models/data_source_table.rb | 4 +++- app/models/table_memo_raw_dataset_column.rb | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/app/models/data_source_table.rb b/app/models/data_source_table.rb index b3d84e2..ea976fb 100644 --- a/app/models/data_source_table.rb +++ b/app/models/data_source_table.rb @@ -16,7 +16,9 @@ def initialize(data_source, schema_name, table_name) def fetch_rows(limit=20) data_source.access_logging do adapter = connection.pool.connections.first - column_names = columns.map {|column| adapter.quote_column_name(column.name) }.join(", ") + decode_with = data_source.encoding or 'UTF-8' + encode_to = Encoding.default_internal or 'UTF-8' + column_names = columns.map {|column| adapter.quote_column_name(column.name.encode(encode_to, decode_with)) }.join(", ") if data_source[:adapter] == 'sqlserver' rows = connection.select_rows(<<-SQL, "#{table_name.classify} Load") SELECT TOP #{limit} #{column_names} FROM #{adapter.quote_table_name(full_table_name)}; diff --git a/app/models/table_memo_raw_dataset_column.rb b/app/models/table_memo_raw_dataset_column.rb index 50c6eb9..a763946 100644 --- a/app/models/table_memo_raw_dataset_column.rb +++ b/app/models/table_memo_raw_dataset_column.rb @@ -9,7 +9,8 @@ def format_value(value) when 'timestamp' '0x' + value.unpack('H*')[0] else - value.to_s.encode(Encoding.default_internal, datasource_encoding).gsub(/\u0000/, '') + dst_enc = Encoding.default_internal or 'UTF-8' + value.to_s.encode(dst_enc, datasource_encoding).gsub(/\u0000/, '') end else case sql_type