Post by slavib » Tue Jan 28, 2014 9:59 pm

Здравейте
Пиша в момента един код на php за opencart
Добавям и променям редове в базата, обаче имам проблем с кирилицата
Както и да го въртя както и да го суча не мога да запиша нищо на кирилица.
Използвам utf-8 нещо липсва в настройките на този utf8 но не знам къде и какво да направя. С латинските символи всичко си върви както трябва

New member

Posts

Joined
Wed Sep 11, 2013 4:13 am

Post by spiders3 » Wed Jan 29, 2014 2:15 am

Пробва ли да го запазиш като UTF8 без BOM?

New member

Posts

Joined
Thu Apr 04, 2013 6:28 am

Post by delpx » Wed Jan 29, 2014 7:23 pm

Здравей. Пробвай да вмъкнеш в кода който пишеш това -
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
или това
header('Content-Type: text/html; charset=utf-8');

и другото нещо е да провериш полетата и таблицата в която пишеш с каква колация са.

Аз съм правил разни подобни скриптове за opencart и си въвеждат записите на кирилица без проблеми.

Newbie

Posts

Joined
Thu Aug 01, 2013 9:09 pm

Post by slavib » Thu Jan 30, 2014 1:30 am

spiders3 wrote:Пробва ли да го запазиш като UTF8 без BOM?
Аз формирам текста във програмата там няма BOM

New member

Posts

Joined
Wed Sep 11, 2013 4:13 am

Post by slavib » Thu Jan 30, 2014 1:31 am

delpx wrote:Здравей. Пробвай да вмъкнеш в кода който пишеш това -
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
или това
header('Content-Type: text/html; charset=utf-8');

и другото нещо е да провериш полетата и таблицата в която пишеш с каква колация са.

Аз съм правил разни подобни скриптове за opencart и си въвеждат записите на кирилица без проблеми.
Не стана с <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
и това header('Content-Type: text/html; charset=utf-8');
полетата са utf8_general_ci

някакви други идей

New member

Posts

Joined
Wed Sep 11, 2013 4:13 am

Post by slavib » Thu Jan 30, 2014 2:16 am

Ето тка изглежда началото ми
<!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=utf-8" />
<title>Read file</title>
</head>
<body>
<?php
header('Content-Type: text/html; charset=utf-8');


Пиша в полето Станислав1
Ето тка изглежда полето Станислав1 след това - полето е varchar(64) utf8_general_ci
Таблицата и тя е utf8_general_ci МyISAM

Ще Ви бъда много благодарен ако ми кажете какво да направя

New member

Posts

Joined
Wed Sep 11, 2013 4:13 am

Post by delpx » Thu Jan 30, 2014 3:46 pm

Здравей. Преди малко изпаднах в ситуация подобна на твоята. Пиша рнр скрипт за ъплоуд на файлове , ако обаче името на файла е на кирилица нещата се чупят. Ето какво направих.

1. В php.ini добавих това default_charset = "UTF-8" - трябва да рестартираш апача след като го промениш
2. В кода който пиша изрично оказвам хедъра - header('Content-Type: text/html; charset=utf-8');
3. При опцията за ъплоуд използвах функцията iconv за да конвертира правилно името на файла. Ти можеш да го използваш за да конвертираш стринга който се опитваш да запишеш в DB-то.

$string = iconv("UTF-8","cp1251",$string); - това трябва да ти върне коректен стринг.

Последното нещо което при мен оправи нещата на 100% е че на мен сървъра ми е на windows и е xampp. Трябваше да сменя System location на Bulgaria и нещата тръгнаха.

Пиши ако не сработи.

Newbie

Posts

Joined
Thu Aug 01, 2013 9:09 pm

Post by slavib » Thu Jan 30, 2014 4:03 pm

На мен доставчика ми е ICN
предполагам че при него всичко е настроено правилно
защото самият Opencart работи правилно
Проблема е някъде при мене.
Стринга който подавам да се записва във базата е в UTF-8 формат

"delpx " благодаря ти но ситуацията която описваш не е същата
При тебе няма писане в поле от базата данни.
При мене има и проблема е само там

New member

Posts

Joined
Wed Sep 11, 2013 4:13 am

Post by slavib » Fri Jan 31, 2014 3:54 am

Ето какво забелязах още
грешните симвули Станислав1 които се записват в базата са точно такива все едно че съм приложил функцията utf8_encode('Станислав1'); и след това съм го записал
Аз обаче не прилагам тази функция.
Изглежда все едно че се прилага нещо такова автоматично

Това обаче не е всичко
Когато го прочета обратно отново си става Станислав1

т.е
1. входа е Станислав1
2. в базата е Станислав1
3. а когато излезне от базата е отново Станислав1

New member

Posts

Joined
Wed Sep 11, 2013 4:13 am

Post by hellsmash » Sat Feb 01, 2014 4:40 am

Можеш ли да кажеш каква е колацията на базата ти данни? Ако главната колация на базата ти данни не е utf8, а таблиците в нея са на utf8 много вероятно там да се крие и проблема ти :)

From and To Opencart Data Migration services | XML/CSV/XLS/TXT to Opencart data entry service | Opencart Update | Viste Bulgaria


New member

Posts

Joined
Wed Jan 20, 2010 10:24 pm


Post by slavib » Sat Feb 01, 2014 5:30 am

hellsmash wrote:Можеш ли да кажеш каква е колацията на базата ти данни? Ако главната колация на базата ти данни не е utf8, а таблиците в нея са на utf8 много вероятно там да се крие и проблема ти :)
utf8_general_ci - и за базата

PHP 5.3.27 или PHP 5.4.21

New member

Posts

Joined
Wed Sep 11, 2013 4:13 am

Post by phenomenonbg » Tue Feb 04, 2014 10:49 pm

свали си notepad++ постави кода който си написал и ако при пействане ти гърми кирлицата значи не го конвертира правилно самият notepad++ си има опция без BOM :) избираш я и ще ти го конвертира правилно ако е това проблема :)

Newbie

Posts

Joined
Tue Feb 04, 2014 10:21 pm

Post by slavib » Wed Feb 05, 2014 4:39 am

Ето тестов код който създадох за проблема.
В реалният код няма създаване на таблица защото се използват таблиците от Opencart
но проблема е същият
нещо му липсва на кода
моля ако някой има идея да ми помогне


Code: Select all

<!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  content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>Test2</title>
</head>
<body>
<?php
//    В панела MySql бази данни 
// 1. Създава се нов потребител с парола
// 2. Създава се нова база данни
// 3. Добавя се потребителя към създадената база със всички привилегии


$username = 'bg112co_test2'; 	//пример
$password = 'stb123456';	//пример
$database = 'bg112co_test2';	//пример
	
	// Create connection
$con=mysqli_connect("localhost",$username,$password,$database);
	// Check connection
if (mysqli_connect_errno())
   {
   echo "Failed to connect to MySQL: " . mysqli_connect_error();
   exit ;
   }
echo '1';

	// Create table	persons
	// Create table string
$sql= "CREATE TABLE IF NOT EXISTS persons(ID int NOT NULL AUTO_INCREMENT, FirstName VARCHAR (30),LastName VARCHAR (30),PRIMARY KEY (ID)) ENGINE = MYISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci";
	// Execute query create table
if (mysqli_query($con,$sql))
  {
  echo "Table persons created successfully";
  }
else
  {
  echo "Error creating table: " . mysqli_error($con);
  exit ;
  }
	// End  Create table persons
	
	// Add new row to table
	// Create add row to table string
$sql = "INSERT INTO persons(FirstName,LastName ) VALUES ( 'Станислав' , 'Иванов')";
	// Execute query add new row
mysqli_query ($con, $sql);
	// End add new row to table

	//Close connection
mysqli_close($con);  
 
?> 
 
</body>
</html>


New member

Posts

Joined
Wed Sep 11, 2013 4:13 am

Post by delpx » Wed Feb 05, 2014 9:47 pm

След канекцията към БД-то се поставя това:

mysqli_set_charset($con, 'utf8');

и нещата вървят.

Newbie

Posts

Joined
Thu Aug 01, 2013 9:09 pm

Post by slavib » Thu Feb 06, 2014 9:01 pm

Благодаря на всички които се отзоваха
всичко е наред вече

New member

Posts

Joined
Wed Sep 11, 2013 4:13 am
Who is online

Users browsing this forum: No registered users and 2 guests