简体   繁体   中英

Display HTML friendly special characters with PHP from a MySQL db

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.

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");

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

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

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