Chinese Characters in mijn database phpMyadmin

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

09/07/2016 14:03:13
Quote Anchor link
Hallo,

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 "撒法厄士大&#22827" 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.
 
PHP hulp

PHP hulp

16/11/2024 00:51:24
 
Thomas van den Heuvel

Thomas van den Heuvel

09/07/2016 16:04:37
Quote Anchor link
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.
 

09/07/2016 16:58:53
Quote Anchor link
Beste Thomas,
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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$db_host
= "localhost";
$db_username = "gebruiker";
$db_pass = "password";
$db_name = "dagwoord";
?>


In dit deel worden de gegevens opgeslagen
=========
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>";
        }
        
    }

}


?>



Toevoeging op 09/07/2016 17:35:24:

Nog even hoe het ingesteld staat binnen phpMyAdmin

Afbeelding
Gewijzigd op 09/07/2016 17:37:00 door
 
Thomas van den Heuvel

Thomas van den Heuvel

09/07/2016 23:29:38
Quote Anchor link
Ik zie daar in de collation kolom dat alle kolommen een latin1 collation hebben, dus de tabel heeft waarschijnlijk ook de character encoding latin1.

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).
 

10/07/2016 10:01:06
Quote Anchor link
Dank je wel voor je input.. Ik duik een beetje de boeken in, om de materie beter te begrijpen.. Nogmaals dank voor je input..
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.