Chinese Characters in mijn database phpMyadmin
Ik heb een "word van de dag" website gemaakt in php en html. hier kun je een word ingeven dan de rest van de info. Ik heb nu geprobeerd om chinese characters toe te voegen dat gaat op zich prima en worden in het resultaat ook weergegeven zoals ik ze heb ik ingegeven. Echter in de database wordt deze zo "撒法厄士大夫" aangegeven. Iemand een tip. Moet ik het zoeken in de database instelling of moet dit in php ergens worden meegegeven? Het type in database heb ik ingesteld op " varchar(200) utf8_general_ci"
Alvast dank voor het meedenken.
Wat je daar beschrijft (utf8_general_ci) is een collation. Dat is niet hetzelfde als een character encoding. Hoe luidt de character encoding van je database, tabel en kolom? Hoe maak je een verbinding met je database? Hoe ziet het document er uit waarin je deze teksten weergeeft? Hoe sla je deze informatie op en hoe luiden je instellingen in phpMyAdmin? Dit alles is van invloed op hoe karakters worden opgeslagen, opgehaald en weergegeven.
Dank je wel voor je reactie, ik ben een beginner en misschien heb ik wel te hoog gegrepen. Maar voor alsnog doe de website wat ik wil. Een woord ingeven, de uitspraak, de betekenis en het gebruik van het woord. Dit maakt bij het leren van een taal eenvoudig,(waar ik nu mee bezig ben). Toen dacht ik, als ik dat voor Bahasa Indonesisch doe, dan kan ik dat ook voor Chinees doen. Maar back to the point, hoop dat iemand iets mee kan, dank weer voor je input...
- De character encoding is UTF-8
- De tekst wordt in een tabel weer gegeven op de website.
- Verbinding maken met de database op de mijn bekende manier
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$db_host = "localhost";
$db_username = "gebruiker";
$db_pass = "password";
$db_name = "dagwoord";
?>
$db_host = "localhost";
$db_username = "gebruiker";
$db_pass = "password";
$db_name = "dagwoord";
?>
In dit deel worden de gegevens opgeslagen
=========
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<?php
if(isset($_POST['submit'])){
$data_missing = array();
if(empty($_POST['word'])){
// Adds name to array
$data_missing[] = 'Word';
} else {
// Trim white space from the name and store the name
$word = trim($_POST['word']);
}
if(empty($_POST['pronounce'])){
// Adds name to array
$data_missing[] = 'Pronounce';
} else {
// Trim white space from the name and store the name
$pronounce = trim($_POST['pronounce']);
}
if(empty($_POST['meaning'])){
// Adds name to array
$data_missing[] = 'Meaning';
} else {
// Trim white space from the name and store the name
$meaning = trim($_POST['meaning']);
}
if(empty($_POST['example1'])){
// Adds name to array
$data_missing[] = 'Example1';
} else {
// Trim white space from the name and store the name
$example1 = trim($_POST['example1']);
}
if(empty($_POST['example2'])){
// Adds name to array
$data_missing[] = 'Example2';
} else {
// Trim white space from the name and store the name
$example2 = trim($_POST['example2']);
}
if(empty($_POST['example3'])){
// Adds name to array
$data_missing[] = 'Example3';
} else {
// Trim white space from the name and store the name
$example3 = trim($_POST['example3']);
}
if(empty($data_missing)){
require_once('../connect.php');
$query = "INSERT INTO wotd_id (id, word, pronounce, meaning, example1, example2, example3, date) VALUES (?, ?, ?, ?, ?, ?, ?, ?) ";
$stmt = mysqli_prepare($link,$query);
mysqli_stmt_bind_param($stmt, "ssssssss", $id, $word, $pronounce, $meaning, $example1, $example2, $example3, $date);
mysqli_stmt_execute($stmt);
$affected_rows = mysqli_stmt_affected_rows($stmt);
if($affected_rows == 1){
echo "<br /><br /><strong><center>";
echo 'Your Daily Word is succesfully added!';
echo "</strong></center>";
mysqli_stmt_close($stmt);
mysqli_close($link);
} else {
echo 'Error Occurred<br />';
echo mysqli_error($link);
mysqli_stmt_close($stmt);
mysqli_close($link);
}
} else{
echo "<br /><strong><center>";
echo 'The following data is missing: <br /> <br />';
echo "</strong></center>";
foreach($data_missing as $missing){
echo "<strong><center>";
echo "$missing";
echo "</strong></center>";
}
}
}
?>
if(isset($_POST['submit'])){
$data_missing = array();
if(empty($_POST['word'])){
// Adds name to array
$data_missing[] = 'Word';
} else {
// Trim white space from the name and store the name
$word = trim($_POST['word']);
}
if(empty($_POST['pronounce'])){
// Adds name to array
$data_missing[] = 'Pronounce';
} else {
// Trim white space from the name and store the name
$pronounce = trim($_POST['pronounce']);
}
if(empty($_POST['meaning'])){
// Adds name to array
$data_missing[] = 'Meaning';
} else {
// Trim white space from the name and store the name
$meaning = trim($_POST['meaning']);
}
if(empty($_POST['example1'])){
// Adds name to array
$data_missing[] = 'Example1';
} else {
// Trim white space from the name and store the name
$example1 = trim($_POST['example1']);
}
if(empty($_POST['example2'])){
// Adds name to array
$data_missing[] = 'Example2';
} else {
// Trim white space from the name and store the name
$example2 = trim($_POST['example2']);
}
if(empty($_POST['example3'])){
// Adds name to array
$data_missing[] = 'Example3';
} else {
// Trim white space from the name and store the name
$example3 = trim($_POST['example3']);
}
if(empty($data_missing)){
require_once('../connect.php');
$query = "INSERT INTO wotd_id (id, word, pronounce, meaning, example1, example2, example3, date) VALUES (?, ?, ?, ?, ?, ?, ?, ?) ";
$stmt = mysqli_prepare($link,$query);
mysqli_stmt_bind_param($stmt, "ssssssss", $id, $word, $pronounce, $meaning, $example1, $example2, $example3, $date);
mysqli_stmt_execute($stmt);
$affected_rows = mysqli_stmt_affected_rows($stmt);
if($affected_rows == 1){
echo "<br /><br /><strong><center>";
echo 'Your Daily Word is succesfully added!';
echo "</strong></center>";
mysqli_stmt_close($stmt);
mysqli_close($link);
} else {
echo 'Error Occurred<br />';
echo mysqli_error($link);
mysqli_stmt_close($stmt);
mysqli_close($link);
}
} else{
echo "<br /><strong><center>";
echo 'The following data is missing: <br /> <br />';
echo "</strong></center>";
foreach($data_missing as $missing){
echo "<strong><center>";
echo "$missing";
echo "</strong></center>";
}
}
}
?>
Toevoeging op 09/07/2016 17:35:24:
Nog even hoe het ingesteld staat binnen phpMyAdmin
Daarnaast stel je geen character set (= character encoding) in bij het maken van een connectie middels de set_charset() methode (al weet ik niet of dit op dit moment een goed idee is).
Dus ik weet niet precies welke character encoding UTF-8 is? Is dat de character encoding van je uiteindelijke HTML-document? Dat is dan in ieder geval incongruent met de manier waarop je met je database communiceert (waarschijnlijk latin1, mogelijk utf8 of equivalent).
Het makkelijkste lijkt mij om alle character encoderingen gelijk te schakelen maar op dit moment maakt het mogelijk niet zoveel uit omdat al je data als html entities (in de vorm &#xxxx;) in je database zit (wat eigenlijk ook een indicatie is dat je kolommen deze informatie niet in de natuurlijke (multibyte) vorm kunnen opslaan).
Dank je wel voor je input.. Ik duik een beetje de boeken in, om de materie beter te begrijpen.. Nogmaals dank voor je input..