Reputation: 11
I have struggled with this some time. I could not get it to work.
On the url http://course.easec.se/problem.pdf I have put together what I have done so far!
Any suggestions?
<?php
header('Content-Type: text/html; charset=ISO-8859-1'); //no changes
$servername = "localhost";
$username = "root";
$password = "password";
$dbname = "db_test4";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
mysqli_set_charset("utf8");
echo "From PHP Script ååååå\n"; //to see if there is problem when edit the script
$sql = "SELECT * FROM test_tbl";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo "Kundid: " . $row["kund_id"]. " - Förnamn: " . $row["fnamn"]. " - Efternamn: " . $row["enamn"]. " - Adress:" . $row["adress1"] ."<br>";
}
} else {
echo "0 results";
}
$conn->close();
?>
Client:
It works now, seems do be my editor, when I tried ANSI instead of UTF-8 and Changes the header to !
Upvotes: 0
Views: 412
Reputation: 67778
Directly below
$conn = new mysqli($servername, $username, $password, $dbname);
add
$conn->set_charset("utf8");
Note: In addition you should also make sure that the charset of your HTML (in the <head>
tag) is set to utf-8
, like <meta charset="utf-8">
Upvotes: 3
Reputation: 22770
I like how you set your question in a PDF, somewhat original :-D
. Now, the answer to your problem will be found here. Read the whole question and as many of the answers as you can.
then as a last effort I change editor to ANSI instead of UTF-8 then it works!
Due to this the issue is your internal PHP script encoding so Reaseach using PHP Multibyte String and setting your PHP code to :
<?php
mb_internal_encoding('UTF-8'); //this is the important one!
mb_http_output('UTF-8');
mb_http_input('UTF-8');
to ensure your PHP code is also UTF-8 complient when executed. You can also (or should be able to) edit the settings in your IDE editor to save PHP files without UTF-8 BOM (Byte Order Mark) which will also solve this problem and save them as UTF-8 understandable by other services.
Additional Notes (cos I like to moan about MySQL UTF-8):
MySQL UTF-8
is NOT the full UTF-8 . Solutions are offered in the linked thread above, some general additions:
1) You want to always use UTF8mb4
(and ideally _unicode_ci
).
2) In the final screenshot of your PDF you should to set as many of these as practical to utf8mb4_unicode_ci
.
3) Setting the connection character set is vital, even if the server and the client both use utf8mb4
if the connection is only utf-8
it brings everything else down to that low point.
4) Recommended:
header('Content-Type: text/html; charset=UTF-8'); //UTF-8
Only MySQL UTF-8 is broken, other implementatios of it is not and is perfectly usable as and is generally regarded as an HTML standard.
Upvotes: 0
Reputation: 1248
Use:
header('Content-Type: text/html; charset=ISO-8859-1');
Instead of:
header('Content-type: text/html; charset=utf-8');
No need to use inside while loop, use top of the page before print anything.
Upvotes: 0