简体   繁体   中英

PHP encoding issues with quotes (“„) and other special characters

I've a problem with encoding on german website. I have a text:

„Eröffnungsfeier FIS Alpine Ski WM 2011“

When this text is saved into database I get? instead of those quotes.

I've tried placing

header("Content-Type: text/html; charset=utf-8");
mb_internal_encoding("UTF-8");
setlocale(LC_ALL, 'de_DE.utf-8');

On the top of the file without success.

When I've used

mysql_set_charset('utf8', $connect);

But then, when inserting text above after reaching first character like ö the rest of the text is stripped.

The table charset and collation is UTF-8. Script file is saved as UTF-8 without BOM.

I lack of ideas where to look.

1) Check the schema of your database - are the text fields set up to store utf-8?

2) It sounds like the page posting to this script is not sending UTF-8. Does it have the correct Content-Type header? What does echo urlencode($var) show? (that's a neat hack to see the raw bytes you're getting)

The things I did helped. Especially mysql_set_charset('utf8', $connect); . The problem was that there was some unwanted code left by another programmer (utf8_decode). Looks like he couldn't deal with utf-8 encoding other way.

I've also found out that mysql_set_charset('utf8', $connect); is not really needed if you're consistent with the encoding from the beginning.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM