sql >> Databáze >  >> RDS >> Mysql

python - Problém s ukládáním znaku Unicode do MySQL pomocí Django

Děkuji všem, kteří sem dávali příspěvky. Opravdu to pomáhá mé znalosti unicode (a doufejme, že i další lidé se něco naučili).

Zdálo se, že jsme všichni štěkali na špatný strom, protože jsem se snažil zjednodušit svůj problém a neposkytl VŠECHNY informace. Zdá se, že jsem nepoužíval „REAL“ řetězce unicode, ale spíše BeautifulSoup.NavigableString, které se opakují jako řetězce unicode. Takže všechny výtisky vypadaly jako unicode, ale nebyly.

Někde hluboko v knihovně MySQLDB si s těmito řetězci nedokázali poradit.

Toto fungovalo:

>>> Achievement.objects.get(name = u"Mirror's Edge\u2122")
<Achievement: Mirror's Edge™>

Na druhou stranu:

>>> b = BeautifulSoup(u"<span>Mirror's Edge\u2122</span>").span.string
>>> Achievement.objects.get(name = b)
... Exceptoins ...
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2122' in position 13: ordinal not in range(128)

Ale funguje to :

>>> Achievement.objects.get(name = unicode(b))
<Achievement: Mirror's Edge™>

Takže ještě jednou díky za veškerou pomoc s unicode, jsem si jistý, že se bude hodit. Ale zatím ...

UPOZORNĚNÍ :BeautifulSoup nevrací hodnotu REAL unicode řetězce a měly by být vynuceny pomocí unicode(), než s nimi uděláte cokoliv smysluplného.



  1. Použití utf8mb4 s php a mysql

  2. Problém dočasné tabulky RODBC při připojování k MS SQL Server

  3. Jak chránit své databáze PostgreSQL před kybernetickými útoky pomocí brány SQL Firewall

  4. Vnitřnosti WITH ENCRYPTION