2010-11-19 19 views
1

Dans la base de données, il y a un nom contenant ñ (ex Niño)Comment imprimer ñ en php

quand je le récupérer à partir de la base de données, l'écho, la sortie sera Nio.

Comment puis-je résoudre ce problème?

+0

C'est le codage de caractères quelque part le long de la ligne. Quel serveur de base de données - MySQL? – JAL

Répondre

3

Vous devrez vous assurer que vos données et le document que vous produisez (via PHP) ont le même encodage. Par exemple, si vos données dans la base de données sont UTF8 (et non corrompues)

Vous devez vous assurer de définir UTF-8 dans l'en-tête de votre document. Comme ceci:

header('Content-Type: text/html; charset=utf-8'); 

(Assurez-vous de définir vos têtes avant la sortie de contenu.)

Parfois, vous devez dire votre DB que vous utilisez un caractère ensemble spécifique:

$db->query("SET NAMES 'utf8'"); 
$db->query("SET CHARACTER SET utf8"); 

This article explique comment s'assurer que PHP et DB parlent le même "langage" du début à la fin. Cela implique que vous utilisiez les méthodes mb * à la place des méthodes habituelles.

Je suggère d'utiliser une bibliothèque pour ce genre de choses - comme Flourishlib qui gère tous les trucs en désordre pour vous - le db, les en-têtes, etc.

ont enfin un regard sur this general UTF 8 article pour un aperçu de la problèmes.

+0

'C'est le moyen préféré pour changer le jeu de caractères. L'utilisation de mysql_query() pour exécuter SET NAMES .. n'est pas recommandée. '- http://www.php.net/manual/fr/fonction.mysql-set-charset.php – ajreal

3

Avez-vous vérifié la configuration de la base de données? Vérifiez-la d'abord sur votre base de données. J'ai le même problème avant quand je CakePHP .. voici ce dos ressembler à CakePHP

//cakephp database configuration 

<?php 
/** 
1. This is core configuration file. 
2. 3. Use it to configure core behaviour ofCake. 
4. 5. PHP versions 4 and 5 
6. 7. CakePHP(tm) : Rapid Development Framework (http://cakephp.org) 
8. Copyright 2005-2011, Cake Software Foundation, Inc. (http://cakefoundation.org) 
9. 10. Licensed under The MIT License 
11. Redistributions of files must retain the above copyright notice. 
12. 13. @copyright  Copyright 2005-2011, Cake Software Foundation, Inc. (http://cakefoundation.org) 
14. @link   http://cakephp.org CakePHP(tm) Project 
15. @package  cake 
16. @subpackage cake.app.config 
17. @since   CakePHP(tm) v 0.2.9 
18. @license  MIT License (http://www.opensource.org/licenses/mit-license.php) 
*/ 
/** 
19. In this file you set up your database connection details. 
20. 21. @package  cake 
22. @subpackage cake.config 
*/ 
/** 
23. Database configuration class. 
24. You can specify multiple configurations for production, development and testing. 
25. 26. driver => The name of a supported driver; valid options are as follows: 
27. mysql  - MySQL 4 & 5, 
28. mysqli  - MySQL 4 & 5 Improved Interface (PHP5 only), 
29. sqlite  - SQLite (PHP5 only), 
30. postgres - PostgreSQL 7 and higher, 
31. mssql  - Microsoft SQL Server 2000 and higher, 
32. db2   - IBM DB2, Cloudscape, and Apache Derby (http://php.net/ibm-db2) 
33. oracle  - Oracle 8 and higher 
34. firebird - Firebird/Interbase 
35. sybase  - Sybase ASE 
36. adodb-[drivername] - ADOdb interface wrapper (see below), 
37. odbc  - ODBC DBO driver 
38. 39. You can add custom database drivers (or override existing drivers) by adding the 
40. appropriate file to app/models/datasources/dbo. Drivers should be named 'dbo_x.php', 
41. where 'x' is the name of the database. 
42. 43. persistent => true/false 
44. Determines whether or not the database should use a persistent connection 
45. 46. connect => 
47. ADOdb set the connect to one of these 
48. (http://phplens.com/adodb/supported.databases.html) and 
49. append it '|p' for persistent connection. (mssql|p for example, or just mssql for not persistent) 
50. For all other databases, this setting is deprecated. 
51. 52. host => 
53. the host you connect to the database. To add a socket or port number, use 'port' => # 
54. 55. prefix => 
56. Uses the given prefix for all the tables in this database. This setting can be overridden 
57. on a per-table basis with the Model::$tablePrefix property. 
58. 59. schema => 
60. For Postgres and DB2, specifies which schema you would like to use the tables in. Postgres defaults to 
61. 'public', DB2 defaults to empty. 
62. 63. encoding => 
64. For MySQL, MySQLi, Postgres and DB2, specifies the character encoding to use when connecting to the 
65. database. Uses database default. 
66. */ 
class DATABASE_CONFIG { 

var $default = array(
    'driver' => 'mysql', 
    'persistent' => false, 
    'host' => 'localhost', 
    'login' => 'root', 
    'password' => '', 
    'database' => 'web_user', 
    'prefix' => '', 
    //'encoding' => 'utf8', 
); 

var $test = array(
    'driver' => 'mysql', 
    'persistent' => false, 
    'host' => 'localhost', 
    'login' => 'user', 
    'password' => 'password', 
    'database' => 'test_database_name', 
    'prefix' => '', 
    //'encoding' => 'utf8', 
); 
} 

Vous devez décommenter la ligne qui ont le encoding => « utf8 »