Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

pontesh

[Resolvido] PHP + Mysql + Caracteres japonêses

Recommended Posts

Ola Hinom.

 

Estou precisando muito de sua ajuda ou do Fabyo.

 

Se lembra do controle de estoque?

 

Tenho um formulário em que preencho os campos com katakana, hiragana, kanji e ou romaji.

 

Tenho um arquivo que recebe os dados e os grava em variáveis; até aqui tudo bem!

 

Meu problema:

 

Quando este arquivo lança os dados no banco de dados perco os katakanas, hiraganas e kanjis.

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis" />
<ti.......

Os campos no mysql estão Collation ujis_japanese_ci.

 

Sei que você pode me ajudar!

 

Muito grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Utilize UTF-8, tanto para o HTML quando para o MySQL, e obviamente para o PHP também.

 

Certifique-se de que mb_internal_encoding() do PHP também esteja com o mesmo enconding. Apesar de ser irrelevante para alguns casos, é recomendável manter tudo com o mesmo padrão.

 

 

Exemplo de configuração em UTF-8

 

PHP, HTML, MySQL - Charset Encoding

http://forum.imasters.com.br/index.php?showtopic=340459

 

 

obs: no MySQL, defina "utf8_general_ci" tanto para o collation da tabela, quanto para o collation dos campos necessários

 

 

Exemplo, criando tabela com charset e collate UTF8

CREATE TABLE `encoding` (
  `id` int(4) NOT NULL auto_increment,
  `text` varchar(100) NOT NULL default '',
  PRIMARY KEY  (`id`),
  UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;

 

Após criar a tabela é possíve alterar o charset para cada campo. Exemplo

ALTER TABLE encoding MODIFY
	text VARCHAR(100)
	  CHARACTER SET utf8
	  COLLATE utf8_general_ci;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hinom ou Fabyo como faço?

 

Preciso gravar hiraganas, katakanas e kanjis no banco de dados.

 

cadastro.php

.....

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja-JP" lang="ja-JP"> 
<head>
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> 
.....
<form id="form1" name="form1" method="post" action="incluir.php">
......
<div id="tudo">
	<td width="119" bgcolor="#FFFFFF"><label>分類</label></td>
	<td width="361" align="left" valign="middle" bgcolor="#FFFFFF"><div align="left">
	  <input name="txt_bunrui" type="text" id="txt_bunrui" size="20" />
	</div></td>
  </tr>...................

incluir.php

 

<?php require_once('Connections/zm.php'); ?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja-JP" lang="ja-JP"> 
<head>
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> 
<title>gravar dados</title>

<?php

$txt_bunrui 		= $_POST['txt_bunrui'];
$txt_meishou 		= $_POST['txt_meishou'];
$txt_kataban 		= $_POST['txt_kataban'];
$txt_kounyugyousha 	= $_POST['txt_kounyugyousha'];
$txt_kosuu 		= $_POST['txt_kosuu'];
$txt_tani 			= $_POST['txt_tani'];
$txt_tanka 		= $_POST['txt_tanka'];
$txt_kakaku 		= $_POST['txt_kakaku'];
$txt_zaiko 			= $_POST['txt_zaiko'];
$txt_nyuukayotei 	= $_POST['txt_nyuukayotei'];
$txt_hattyubi 		= $_POST['txt_hattyubi'];
$txt_hattyusuu 		= $_POST['txt_hattyusuu'];
$txt_yoteibi 		= $_POST['txt_yoteibi'];
$txt_nouhinbi 		= $_POST['txt_nouhinbi'];
$txt_nyuukakasuu 	= $_POST['txt_nyuukakasuu'];
$txt_bikou 		= $_POST['txt_bikou'];

mysql_select_db($database_zm, $zm);
$query_estoq = "INSERT INTO  mteq.zm (zm_id , zm_bunrui , zm_meishou , zm_kataban , zm_kounyugyousha , zm_kosuu , zm_tani , zm_tanka , zm_kakaku , zm_zaiko , zm_nyuukayotei , zm_hattyubi , zm_hattyusuu , zm_yoteibi , zm_nouhinbi , zm_nyuukakasuu , zm_bikou)
VALUES ( NULL ,  '$txt_bunrui',  '$txt_meishou',  '$txt_kataban',  '$txt_kounyugyousha',  '$txt_kosuu',  '$txt_tani',  '$txt_tanka',  '$txt_kakaku',  '$txt_zaiko',  '$txt_nyuukayotei',  '$txt_hattyubi', '$txt_hattyusuu',  '$txt_yoteibi',  '$txt_nouhinbi',  '$txt_nyuukakasuu',  '$txt_bikou');";
mysql_query($query_estoq, $zm) or die(mysql_error());

?>
Até aqui tudo bem! Sei que esta tudo bem porque estou exibindo os dados passados para o incluir.php, mas no banco de dados aparecem outros símbolos no lugar dos caracteres japoneses.

 

Uma luz por favor.

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

pontesha, você está usando shift_jis

 

é um conjunto de caracteres em desuso assim como o antigo e terrível "bake-moji"

 

"euc-jp" também está em desuso, portanto utilize utf-8, que é o formato internacionalizado.

 

os conjuntos de caracteres japoneses atuais são 3

 

shift_jis

euc-jp

iso-2022-jp

 

não é recomendável o uso de nenhum desses conjuntos, pois estão sendo desencorajados para fins de desuso

 

euc-jp em especial é o pior de se lidar e já está em desuso.

 

utilize utf-8

 

contudo, escolha o que for conveniente para você.

 

 

quanto ao que você comentou sobre os carcteres estranhops no banco de dados, isso é "normal".

é falha do gerenciador de banco de dados que você utiliza.

a maioria dos gerenciadores de banco de dados não suporta o conjunto de caracteres multibyte de países da ásia, grécia, oriente médio, etc..

 

isso deve-se ao fato de que esses sfotwares são produzidos por programadores que vivem nos EUA ou europa, por isso, o suporte é falho.

 

para gerenciar de forma efetiva, procure por gerenciadores de banco de dados desenvolvidos por empresas locais.

mas nao recomendo pois geralmente são muito limitados e sem muito suporte.

 

o melhor software gerenciador com suporte a multiidiomas é o "EMS MySQL Manager"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito agradecido a todos pela ajuda.

Hinom, Mateus Rezende e Fabyo valeu.

Respeitosamente Silvio Pontes.

 

 

pontesha, você está usando shift_jis

 

é um conjunto de caracteres em desuso assim como o antigo e terrível "bake-moji"

 

"euc-jp" também está em desuso, portanto utilize utf-8, que é o formato internacionalizado.

 

os conjuntos de caracteres japoneses atuais são 3

 

shift_jis

euc-jp

iso-2022-jp

 

não é recomendável o uso de nenhum desses conjuntos, pois estão sendo desencorajados para fins de desuso

 

euc-jp em especial é o pior de se lidar e já está em desuso.

 

utilize utf-8

 

contudo, escolha o que for conveniente para você.

 

 

quanto ao que você comentou sobre os carcteres estranhops no banco de dados, isso é "normal".

é falha do gerenciador de banco de dados que você utiliza.

a maioria dos gerenciadores de banco de dados não suporta o conjunto de caracteres multibyte de países da ásia, grécia, oriente médio, etc..

 

isso deve-se ao fato de que esses sfotwares são produzidos por programadores que vivem nos EUA ou europa, por isso, o suporte é falho.

 

para gerenciar de forma efetiva, procure por gerenciadores de banco de dados desenvolvidos por empresas locais.

mas nao recomendo pois geralmente são muito limitados e sem muito suporte.

 

o melhor software gerenciador com suporte a multiidiomas é o "EMS MySQL Manager"

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.