sql >> Databasteknik >  >> RDS >> Mysql

Specialtecken i PHP/MySQL

Jag skulle bara vilja ge lite mer information om lösningen som föreslagits av vartec vilket är (beroende på din MySQL-installation) den mest korrekta lösningen på ditt problem. Först och främst är problemet med teckenuppsättning/kodning i MySQL ett något komplext ämne som behandlas utförligt i MySQL-manualen Kapitel 9.1 "Stöd för teckenuppsättning" . I ditt fall särskilt 9.1.4. "Anslutningsteckenuppsättningar och sorteringar" kommer att vara mest relevant.

För att göra det kort:MySQL måste veta vilken teckenuppsättning/kodning din klientapplikation (talar från databaspersoektivet som är ditt PHP-skript) förväntar sig eftersom det kommer att omkoda all strängdata från den interna teckenuppsättningen/kodningen som definieras på server-, databas-, tabell- eller kolumnnivå i anslutningens teckenuppsättning/kodning. Du använder UTF-8 på klientsidan så måste berätta för MySQL att du använder UTF-8. Detta görs med MySQL-kommandot SET NAMES 'utf8' som måste skickas som den första frågan när en anslutning öppnas. Beroende på din installation och på vilket MySQL-klientbibliotek du använder i PHP-skriptet kan detta göras automatiskt vid varje anslutning.

Om du använder PDO är det bara att ställa in en konfigurationsparameter

$db = new PDO($dsn, $user, $password);
$db->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES 'utf8'");

Att använda mysqli för att ändra klientens teckenuppsättning/kodning är ännu enklare:

$mysqli = new mysqli("localhost", "user", "password", "db");
$mysqli->set_charset("utf8");

Jag hoppas att det kommer att bidra till att göra det hela mer begripligt.



  1. FEL 1396 (HY000):Operation CREATE USER misslyckades för 'jack'@'localhost'

  2. Mallmönster och modifierare för numerisk formatering i PostgreSQL

  3. Hur man byter ut en ny linje i Oracle

  4. Hur väljer och optimerar man orakelindex?