我使用sqlalchemy来创建我的数据库的模式.无论我怎么做,我都没有成功地使用utf-8.
这是一个重新创建我的问题的最小python脚本:
from sqlalchemy import create_engine, Column, Unicode
from sqlalchemy.ext.declarative import declarative_base
engine = create_engine('mysql+mysqldb://user:password@localhost/multidic?charset=utf8', echo=True)
Base = declarative_base()
class MyTableName(Base):
__tablename__ = "mytablename"
test_column = Column(Unicode(2),primary_key=True)
Base.metadata.create_all(engine)
Run Code Online (Sandbox Code Playgroud)
运行此脚本后,当我查看数据库时,我看到编码是latin1而不是utf-8:
mysql> SHOW FULL COLUMNS FROM mytablename;
+-------------+------------+-------------------+------+-----+---------+-------+---------------------------------+---------+
| Field | Type | Collation | Null | Key | Default | Extra | Privileges | Comment |
+-------------+------------+-------------------+------+-----+---------+-------+---------------------------------+---------+
| test_column | varchar(2) | latin1_swedish_ci | NO | PRI | NULL | | select,insert,update,references | |
+-------------+------------+-------------------+------+-----+---------+-------+---------------------------------+---------+
1 row in set (0.00 sec) …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 R 中复制以下 Python 代码的输出:
import hashlib
x = hashlib.sha256()
x.update("asdf".encode("utf8"))
print(x.digest())
# b'\xf0\xe4\xc2\xf7lX\x91n\xc2X\xf2F\x85\x1b\xea\t\x1d\x14\xd4$z/\xc3\xe1\x86\x94F\x1b\x18\x16\xe1;'
Run Code Online (Sandbox Code Playgroud)
这是我的 R 代码:
library(digest)
digest("asdf", algo="sha256", serialize=FALSE)
# "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b"
Run Code Online (Sandbox Code Playgroud)
我可以通过使用x.hexdigest()而不是x.digest(). 如何x.digest()在我的 R 代码中获取输出?