1

I'm from Mexico, so our strings contain some special characters that need to be stored and later displayed. Is there a way (using PHP) to encode a string from MySQL and use it in html?

  <?php 
    function especialidades($dbcesp){
        $q="SELECT NombreEspecialidad FROM especialidad;";
        $r=mysqli_query($dbcesp, $q);

        while ($esp=mysqli_fetch_assoc($r)) {
            ?>
            <button type="button" class="btn btn-default"><?php echo $esp['NombreEspecialidad']; ?></button>
            <?php
        }
    } 
   ?>

This is the way I retrieve and generate some buttons for my webpage, but for some reason, aren't displayed correctly.

Juan De la Cruz
  • 436
  • 6
  • 17
  • Please, consider [this](http://stackoverflow.com/questions/1996122/how-to-prevent-xss-with-html-php) as well. – IROEGBU May 27 '15 at 07:21

3 Answers3

3

first go to your phpmyadmin then set Server connection collation to utf8mb4_general_ci

then select your database name then press on your table then press on structure you will see all columns inside your table go and change all columns using type varchar or text then go press on change the change the collation to utf8_general_ci then save then try to input another entry to your database it will be clearly now without any fuzzing words

and the top of your code type

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

and those lines in the top of your php code to define the utf charset

mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET utf8");
header("Content-Type: text/html; charset=UTF-8");
auth private
  • 1,318
  • 1
  • 9
  • 22
1

You should configure database for using UTF-8. Also don't forget to set encoding on html to UTF-8 too.

Also, check the following link: MySql spanish character data

Community
  • 1
  • 1
kala4ek
  • 113
  • 3
0

I had to change the database collation to utf8_spanish_ci (during database creation in PHPMyAdmin).

Also, I had to add the charset meta tag to the html document:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

And finally, I used the PHP encode api, being used as follows:

  <?php 
function especialidades($dbcesp){
    $q="SELECT * FROM especialidad;";
    $r=mysqli_query($dbcesp, $q);

    while ($esp=mysqli_fetch_assoc($r)) {
        ?>
        <a href="?page=6&esp=<?php echo $esp['CveEspecialidad']; ?>">
        <button type="button" class="btn btn-default" value="<?php echo $esp['CveEspecialidad']; ?>">

                <?php
                    echo utf8_encode($esp['NombreEspecialidad']); 
                ?>

        </button>
        </a>
        <?php
    }
} 
?>

This worked for me

Juan De la Cruz
  • 436
  • 6
  • 17