0

mysql と sqlserver を使用してアプリケーションを開発しています。sqlserver は、レガシー テーブルへの接続に使用されます。

これが私の定義です

development:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: spvalores_development  
  username: secret
  password: secret
  pool: 5
  host: 192.168.100.35  
  socket: mysql
  port: 3306

sql_server_db:
  adapter: sqlserver
  database: SPPokerManager
  dsn: DesaSqlServer
  mode: odbc
  username: sa
  password: master
  encoding: utf8

私が使用する宝石:

gem 'activerecord-sqlserver-adapter'
gem 'ruby-odbc'

これは私のモデルです

class Client < ActiveRecord::Base
  self.table_name =  "dbo.LOB_CLIENTE"
  self.primary_keys = :CASINO_ID, :CLIENTE_ID
  establish_connection :sql_server_db

  attr_accessible :CASINO_ID, :CLIENTE_ID, :CDNI, :CAPELLIDO, :CNOMBRES,:TIPODOCUMENTO_ID, :CNICKNAME, :CDIRECCION, :CTELEFONO, :CCELULAR, :CEMAIL, :COBSERVACIONES, :CLIENTEPERFIL_ID
  attr_accessible :DFECHAINGRESO, :BIDENTIFICADO, :BACEPTAENVIOSMS, :IFOTO, :COLATIPOPREFERIDA_ID
  attr_accessible :BACTIVO, :CNROJUGADOR, :CSEXO, :DFECHANACIMIENTO, :NACIONALIDAD_ID, :CEMAIL2, :CPATROCINADOR, :CPAISRESIDENCIA, :CPROVINCIARESIDENCIA, :CCIUDADRESIDENCIA
  attr_accessible :DFECHAHORA_CESIONIMAGEN, :BFIRMA, :BJUGADORFRECUENTE, :DFECHAACTUALIZACION

  def as_json(options={})
    nick = self.CNICKNAME.force_encoding("ISO-8859-1").encode("UTF-8")
    name = self.CNOMBRES.force_encoding("ISO-8859-1").encode("UTF-8") unless self.CNOMBRES.nil?
    surname = self.CAPELLIDO.force_encoding("ISO-8859-1").encode("UTF-8") unless self.CAPELLIDO.nil?
    {:CLIENTE_ID => self.CLIENTE_ID ,:CNICKNAME => nick ,:CAPELLIDO => surname ,:CNOMBRES => name, :CDNI => self.CDNI, :TIPODOCUMENTO_ID =>  self.TIPODOCUMENTO_ID }
  end 

end

私はいつもこのようなエラーが発生します:

incompatible character encodings: ASCII-8BIT and UTF-8

私が解決した唯一の方法は、このようなことをすることです

modelinstance.field.force_encoding("ISO-8859-1").encode("UTF-8")

そのテーブルにはたくさんのフィールドがあります。さらに、このような他のテーブルにクエリを実行する必要があることを確認してください。

データベースのプロパティを見ると、照合順序は Modern_Spanish_CI_AS です

照合Modern_Spanish_CI_ASでプロパティを表示および保存するようにレールを構成する方法

事前に感謝します、明確にすることを願っています

4

1 に答える 1

0

さて、私は最終的に問題を解決します。

tiny_tds を使用する必要があります。

ここに説明があります:

https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/wiki/Using-TinyTds

于 2012-10-02T14:02:44.987 に答える