Подружить MySQL и кирилицу

Тема в разделе "Raspberry Pi", создана пользователем itsWoland, 16 мар 2018.

  1. itsWoland

    itsWoland Нерд

    Как мне превратить ÄîÁðî ïîæàëîâàòü в нормальный русский текст силами или python или на худой конец php
     
  2. itsWoland

    itsWoland Нерд

    Код (Python):
    #!/usr/bin/python
    #-*- coding: utf-8 -*-
    # Example using a character LCD connected to a Raspberry Pi or BeagleBone Black.
    import sys
    import time
    import MySQLdb
    from datetime import datetime
    from subprocess import *

    import Adafruit_CharLCD as LCD
    reload(sys)
    sys.setdefaultencoding('utf-8')

    # Raspberry Pi pin configuration:
    lcd_rs        = 25  # Note this might need to be changed to 21 for older revision Pi's.
    lcd_en        = 24
    lcd_d4        = 22
    lcd_d5        = 23
    lcd_d6        = 18
    lcd_d7        = 17
    lcd_backlight = 4

    # BeagleBone Black configuration:
    # lcd_rs        = 'P8_8'
    # lcd_en        = 'P8_10'
    # lcd_d4        = 'P8_18'
    # lcd_d5        = 'P8_16'
    # lcd_d6        = 'P8_14'
    # lcd_d7        = 'P8_12'
    # lcd_backlight = 'P8_7'

    # Define LCD column and row size for 16x2 LCD.
    #lcd_columns = 16
    #lcd_rows    = 2

    # Alternatively specify a 20x4 LCD.
    lcd_columns = 20
    lcd_rows    = 4

    # Initialize the LCD using the pins above.
    lcd = LCD.Adafruit_CharLCD(lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7,
                               lcd_columns, lcd_rows, lcd_backlight)
    moment = datetime.now().strftime('  %d.%m.%Y %H:%M \n')
    greeting='Добро пожаловать'.encode('utf-8')
    db=MySQLdb.connect("localhost", "nigger", "all_cops_are_bastards", "ghetto")
    cursor=db.cursor()
    sql = "UPDATE text_display SET text ='  %s' WHERE id ='1';" % greeting
    cursor.execute (sql)
    sql = "UPDATE text_display SET text ='%s' WHERE id ='2';" % moment
    cursor.execute (sql)
    sql = "UPDATE text_display SET text =' ' WHERE id ='3';"
    cursor.execute (sql)
    sql = "UPDATE text_display SET text =' ' WHERE id ='4';"
    cursor.execute (sql)
    db.commit()
    db.close()
    # Print a two line message
    lcd.write8(0b101010)
    #lcd.message('      Welcome!\n')
    lcd.message('  \xC4\xEE\xC1\xF0\xEE \xEF\xEE\xE6\xE0\xEB\xEE\xE2\xE0\xF2\xFC\n')
    lcd.message(datetime.now().strftime('  %d.%m.%Y %H:%M \n'))
    lcd.backlight(0)
    #lcd.message('\xC4\xEE\xC1\xF0\xEE \xEF\xEE\xE6\xE0\xEB\xEE\xE2\xE0\xF2\xFC')
    time.sleep(0.5)
     
  3. Jeid

    Jeid Нерд

    А у вас эти иероглифы из БД получается? Сама таблица в базе в какой кодировке?
     
  4. itsWoland

    itsWoland Нерд

    сама таблица в UTF-8
    upload_2018-4-4_20-44-12.png upload_2018-4-4_20-44-51.png
     
  5. Jeid

    Jeid Нерд

    Всё равно не понятно, вам иероглифы из БД приходят? Или записываются туда иероглифы?

    Попробуйте в самом начала сделать забрось к БД
    PHP:
    set names utf8
     
  6. itsWoland

    itsWoland Нерд

    Идёт запись иероглифами
    При Записи через пхп все норм
     
  7. Bobreogen

    Bobreogen Нерд

    Используйте различные кодировки, возможно стоит использовать cp1251 (иногда её обозначают как windows-1251)
     
  8. Prochor

    Prochor Нерд

    Пробуйте кодировки для БД cp1251_general_ci или utf8_unicode_ci

    db = MySQLdb.connect(host="example.com",user='user',passwd='passwd',db='db',charset='cp1251')
     
    Последнее редактирование: 3 май 2018