Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
Publico acá de nuevo porque tengo un problema de ingreso de datos a base de datos MySQL (uso XAMPP).
Ingreso 7 datos a la tabla (6 ya que el id es autogenerado): año, mes, comercializador, código, usuario, energía.
Pero cuando los datos están tildados o tienen 'ñ' se guardan en la base de datos símbolos ilegibles.
Los caracteres que guarda son:
Using text Syntax Highlighting
en vez de ÁÉÍÓÚÑáéíóúñ guarda ÃÉÃÓÚÑáéÃóúñ
OJO: Este problema lo presenta cuando los datos los defino en el script o los obtengo de un textbox de Tk pero si los datos los obtengo de una hoja de Excel el ingreso en la base de datos se da sin problemas.
Además los datos que se encuentran ingresados correctamente con tildes y 'ñ' son visualizados correctamente sin problema en los Hlist de Tk que uso para la visualización de datos.
Mi programa original es bastante extenso y tiene interfaz gráfica realizada en Tk. Publico acá un script corto que recrea el problema.
El cotejamiento de la base de datos MySQL es utf8_spanish_ci.
Using perl Syntax Highlighting
- use strict;
- use warnings;
- use DBI;
- use Win32::OLE;
- use Win32::OLE::Variant;
- use Win32::OLE::Const 'Microsoft Excel';
- # my $anio = '2017';
- # my $mes = '3';
- # my $comercializador = 'ÁÉÍÓÚÑáéíóúñ'; #esto lo tengo comentado cuando
- # my $codigo = 'codigo01'; #lo estoy trayendo del excel
- # my $usuario ='ÁÉÍÓÚÑáéíóúñ';
- # my $energia = '325';
- my $excel = Win32::OLE->new('Excel.Application');
- $excel -> {Visible} = 1;
- $excel -> {DisplayAlerts} = 0;
- my $libro = $excel->Workbooks->Open("C:\\Users\\jarias\\Desktop\\Book1.xlsx");
- my $hoja = $libro->Worksheets('Sheet1');
- $hoja->Activate();
- my $anio = $hoja->Range('A2')->{Value};
- my $mes = $hoja->Range('B2')->{Value};
- my $comercializador = $hoja->Range('C2')->{Value};
- my $codigo = $hoja->Range('D2')->{Value};
- my $usuario = $hoja->Range('E2')->{Value};
- my $energia = $hoja->Range('F2')->{Value};
- my $dbname = 'Grandes_Usuarios';
- my $dbhost = 'localhost';
- my $dbuser = 'root';
- my $dbh = DBI->connect("DBI:mysql:$dbname;host=$dbhost", $dbuser)
- or die "Error de conexion: $DBI::errstr";
- my $sql = " INSERT INTO EC15 VALUES ('','$anio', '$mes', '$comercializador', '$codigo', '$usuario', '$energia')";
- &Base_Datos($sql, $dbh);
- $dbh->disconnect();
- sub Base_Datos{
- #se le entrega el query y la base de datos si es un SELECT devuelve una variable ($registros)
- #con el número de filas y
- # %Hash_Resultado{
- # 1 => [columna,columna,columna...],
- # 2 => [columna,columna,columna...],
- # .
- # .
- # .
- # $registros => [columna,columna,columna...]
- # }
- # si no es SELECT ejecuta el query y no devuelve nada
- my ($sql, $dbh) = @_;
- my $sth = $dbh->prepare ( $sql );
- $sth->execute();
- my $registros = 0;
- my %Hash_Resultado;
- if ($sql =~ /SELECT /i){
- while( my @arreglo_fila = $sth->fetchrow_array){
- $registros++;
- push(@{$Hash_Resultado{$registros}}, @arreglo_fila);
- }
- return($registros,%Hash_Resultado);
- }
- else{
- return ();
- }
- }
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
Comento también que estoy escribiendo el código en Sublime Text 2 y todo corre en Windos 7.
Gracias por adelantado.