Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
727 views
in Technique[技术] by (71.8m points)

php - CodeIgniter config charset and UTF-8 support

I'm working on a website which uses / stores accented characters in the database. I have the page template set so that the config.php charset variable matches the setting, e.g.:

<meta charset="<?php echo $this->config->item('charset');?>">

The problem I'm having is, when $config['charset'] is set to UTF-8, the form validation fails and it's as if no characters were submitted if an accented character was included. So, for example, a required field will bounce back if á is included anywhere in the string. The string minus the á works fine.

I've managed to get this working by changing the $config['charset'] to ISO-8859-1 and converting text to UTF-8 before inserting / after retrieving from the database with php's utf8_encode() and utf8_decode(). Is this the best way or am I missing something needed in order to get UTF-8, with accented characters, working in CodeIgniter?

Any advice appreciated.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

You have to make sure that you use UTF-8 everywhere, and that both PHP and MySQL are configure to handle UTF-8.

In the html, add the meta-tag:

<meta charset="utf-8" />

And save it in UTF-8 format. here is how to do that in notepad++.

Define the MySQL tables to support UTF-8, create table with:

DEFAULT CHARSET=utf8;

And set the connection to:

mysql_set_charset('utf8', $con);

Enable UTF-8 in the php.ini:

default_charset = "utf-8"

For a full manual check Handling Unicode Front To Back In A Web App


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

2.1m questions

2.1m answers

60 comments

57.0k users

...