Caracteres especiales (acentuados y ñ s) en irb y en script/console

Hola gente,

No sé si es cosa de mi consola o es cosa de la consola de ruby y de rails.

El caso es que no puedo insertar caracteres acentuados y/o ñs en las
consolas:

  • irb
  • script/console

Ni si quiera me funciona copy&paste, simplemente se come lo que no le
gusta:

“mi título con ñ” al pegarlo en consola me sale "mi ttulo con ".

No sé si necesitáis algo de esto:

$ uname -a
Darwin macbook-de-fernando-guillen.local 9.4.0 Darwin Kernel Version
9.4.0: Mon Jun 9 19:30:53 PDT 2008; root:xnu-1228.5.20~1/RELEASE_I386
i386

$ echo $SHELL
/bin/bash

He mirado en google haciendo pero no encuentro nada… quizás porque no
haga la pregunta adecuada o porque es problema de mi configuración…

No sé

Cualquier sugerencia en bienvenida.

f.

Recién pruebo y es como vos decís, no anda.
Pero mi pregunta es, para que necesitas que ande? No le veo utilidad
alguna.

On Tue, Aug 26, 2008 at 2:50 PM, Fernando G.

si luego en el irb poner ciertos caracteres se dificulta mucho y es una
lata
pero pues

realmente para lo que es el irb no seria de tanta utilidad cosas como
acentos y ñ.

pero si descubres como cambiar eso me avisas xD

que lo que no me agrada mucho es que en irb las teclas no corresponden
a mi
teclado y algunos

caracteres o me cuesta ponerlos o no puedo y termino creando una clase
de
prueba y corriendola

pero generalmente uso irb sin broncas, solo ocaciones aisladas como la ~
que
no mas no logro ponerla en

el irb

2008/8/26 Juan P. [email protected]

2008/8/26 Juan P. [email protected]:

Recién pruebo y es como vos decís, no anda.
Pero mi pregunta es, para que necesitas que ande? No le veo utilidad alguna.

Pues es que precisamente quería hacer pruebas rápidas para una
funciónde ‘sanitización’ de cadenas.

:confused:

Usas el Terminal normal o el iTerm?

Puedes hacer un locale a ver qué te sale?

2008/8/26 Fernando G. [email protected]:

El día 26 de agosto de 2008 20:21, Fernando B. [email protected]
escribió:> Usas el Terminal normal o el iTerm?

Aplicaciones > Utilidades > Terminal.app

No sé si esto contesta a tu pregunta.

Puedes hacer un locale a ver qué te sale?

claaaro:

$ locale
LANG=“es_ES.UTF-8”
LC_COLLATE=“es_ES.UTF-8”
LC_CTYPE=“es_ES.UTF-8”
LC_MESSAGES=“es_ES.UTF-8”
LC_MONETARY=“es_ES.UTF-8”
LC_NUMERIC=“es_ES.UTF-8”
LC_TIME=“es_ES.UTF-8”
LC_ALL=

f.

El día 26 de agosto de 2008 22:07, Guillermo
[email protected]
escribió:> Existe un documento[1]

Guillermo… el link?

Existe un documento[1] que explica de que va la cosa. Pero en mi mac no
he
conseguido hacerlo funcionar.
En linux funciona muy bien.

On Tue, Aug 26, 2008 at 10:21 PM, Fernando G.
[email protected]wrote:

El día 26 de agosto de 2008 22:07, Guillermo
[email protected] escribió:

Existe un documento[1]

Guillermo… el link?

ups sorry.

http://wiki.rubyonrails.org/rails/pages/HowToUseUnicodeStrings

Si inicias irb con el flag --noreadline esos carácteres funcionan
perfectamente. Porque en realidad irb en Mac OS X no utiliza readline,
sino otra biblioteca.

Existe una solución para sustituir la biblioteca readline de Ruby para
utilizar readline en vez de la que utiliza por defecto:
http://henrik.nyh.se/2008/03/irb-readline.

Cuidado, porque la entrada no es muy vieja, pero al menos mi versión
de Ruby ha cambiando a la 1.8.6-114 (ruby --version) y hay que cambiar
de donde te descargas el código de la extensión de Ruby. También es
muy importante instalar la versión universal de readline de MacPorts,
en otro caso suceden cosas raras. Y por último con script/console las
cadenas aparecerán correctamente con sus acentos, para que suceda en
irb tienes que poner $KCODE=‘u’ al empezar a utilizar la consola o en
tu .irbrc.

Desventaja: cuando caigan Security Updates o similares te tocará
realizar de nuevo esos tres o cuatro pasos, porque Apple sobrescribirá
tu nueva biblioteca.

Suerte.

El día 26 de agosto de 2008 23:29, Daniel R.
Troitiño[email protected]
escribió:> Existe una solución para sustituir la biblioteca readline de Ruby para

utilizar readline en vez de la que utiliza por defecto:
http://henrik.nyh.se/2008/03/irb-readline.

Gracias Daniel, It Works! :slight_smile:

No he tenido que iniciar la $KCODE en la script/console,
milagrosamente está inicializada:

puts $KCODE
UTF8

Gracias a tí también Guillermo… tu link va más allá de mi problema
con la consola… vaya lío con el unicode :slight_smile:

Saludos
f.

A partir de Rails 2, según creo, el $KCODE ya venía inicializado.

2008/8/27 Fernando G. [email protected]:

2008/8/27 Fernando B. [email protected]:

A partir de Rails 2, según creo, el $KCODE ya venía inicializado.

Yep, fue en la 1.2 que se puso opinionated en cuanto a encodings :-),
lo hace en initializer.rb:

def process
  check_ruby_version
  set_load_path
  set_connection_adapters

  require_frameworks
  set_autoload_paths
  load_environment

  initialize_encoding
  ...
end

# This initialzation sets $KCODE to 'u' to enable the multibyte

safe operations.
# Plugin authors supporting other encodings should override this
behaviour and
# set the relevant +default_charset+ on ActionController::Base
def initialize_encoding
$KCODE=‘u’
end

2008/8/27 Fernando G. [email protected]:

No he tenido que iniciar la $KCODE en la script/console,
milagrosamente está inicializada:

Sí, en script/console de los Rails recientes funciona sin problemas,
el $KCODE está puesto, me refería si utilizabas irb a secas… sin
Rails de por medio.