ruby ruby-on-rails-3 ascii

Ruby 1.9-no válido multibyte char(US-ASCII)



ruby-on-rails-3 (3)

Estoy tratando de hacer que mi aplicación Rails (2.3.5) se ejecute en Ruby 1.9, tengo esta función que hace algunas transformaciones en una cadena:

def replace_special_chars(downcase = true) if downcase string = self.downcase else string = self end string.gsub! /á|ã|à|ä|â/, ''a'' string.gsub! /é|è|ë|ê/, ''e'' string.gsub! /í|ì|ï|î/, ''i'' string.gsub! /ó|õ|ò|ô|ö/, ''o'' string.gsub! /ú|ù|ü|û/, ''u'' string.gsub! /ç/, ''c'' string.gsub! /&/, ''e'' string.gsub! //s/, ''-'' string.gsub! /[^a-zA-Z_0-9-]/, '''' string.gsub! /-(-)+/, ''-'' string end

Pero cuando intento iniciar el servidor, obtengo este error:

<internal:lib/rubygems/custom_require>:29:in `require'': /Users/.../lib/nzn_string.rb:11: invalid multibyte char (US-ASCII) (SyntaxError) /Users/.../lib/nzn_string.rb:11: invalid multibyte char (US-ASCII) /Users/.../lib/nzn_string.rb:11: syntax error, unexpected $end, expecting keyword_end string.gsub! /á|ã|à|ä|â/, ''a'' ^

desde: 29 en ''require''

¿Cuál es la forma correcta de hacer esto en ruby ​​1.9? No sé qué me falta aquí


Creo que también puede cambiar las expresiones regulares de la sintaxis / re / a la sintaxis (Regexp.new ''re'', nil, ''n'')

Por ejemplo, la instrucción que mencionaste:

string.gsub! / á | ã | à | ä | â /, ''a''

se convertirá:

string.gsub! (Regexp.new ''á | ã | à | ä |'' '', nil,'' n ''),'' a ''

Más detalles aquí:

http://www.ruby-forum.com/topic/183413


Escriba # encoding: utf-8 en la parte superior de ese archivo. Eso cambia la codificación predeterminada de todos los literales de cadena / regexp en ese archivo utf-8 . La codificación predeterminada para todos los literales es US-ASCII , que no puede representar á .