小编Jer*_*tte的帖子

转换双斜杠utf-8编码

我不能让这个工作!我有一个保存游戏文件解析器的文本文件,其中包含一堆UTF-8中文名称,字节形式,如source.txt中所示:

\ XE6\X89\x8e\xe5\x8a\XA0\XE6\x8b\X89

但是,无论我如何将它导入Python(3或2),我最多得到这个字符串:

\\ \\ XE6 \\ X89 \\ x8e \\ xe5 \\ x8a \\ XA0 XE6 \\ \\ x8b X89

像其他线程建议的那样,我尝试将字符串重新编码为UTF-8,然后使用unicode escape解码它,如下所示:

stringName.encode("utf-8").decode("unicode_escape")
Run Code Online (Sandbox Code Playgroud)

但是它会混淆原始编码,并将其作为字符串:

'æ\ x89 \x8eå\ x8a \xa0æ\ x8b\x89'(打印此字符串会导致:æåæ)

现在,如果我手动复制并粘贴b +文件名中的原始字符串并对其进行编码,我会得到正确的编码.例如:

b'\xe6\x89\x8e\xe5\x8a\xa0\xe6\x8b\x89'.encode("utf-8")
Run Code Online (Sandbox Code Playgroud)

结果:'扎加拉'

但是,我无法以编程方式执行此操作.我甚至无法摆脱双斜线.

要清楚,source.txt包含单个反斜杠.我尝试过多种方式导入它,但这是最常见的:

with open('source.txt','r',encoding='utf-8') as f_open:
    source = f_open.read()
Run Code Online (Sandbox Code Playgroud)

好的,所以我点击下面的答案(我认为),但这是有效的:

from ast import literal_eval
decodedString = literal_eval("b'{}'".format(stringVariable)).decode('utf-8')
Run Code Online (Sandbox Code Playgroud)

由于其他编码问题,我无法在整个文件中使用它,但是将每个名称提取为字符串(stringVariable),然后这样做有效!谢谢!

更清楚的是,原始文件不仅仅是这些混乱的编码.它仅对某些字段使用它们.例如,这是文件的开头:

{'m_cacheHandles': ['s2ma\x00\x00CN\x1f\x1b"\x8d\xdb\x1fr \\\xbf\xd4D\x05R\x87\x10\x0b\x0f9\x95\x9b\xe8\x16T\x81b\xe4\x08\x1e\xa8U\x11',
                's2ma\x00\x00CN\x1a\xd9L\x12n\xb9\x8aL\x1d\xe7\xb8\xe6\xf8\xaa\xa1S\xdb\xa5+\t\xd3\x82^\x0c\x89\xdb\xc5\x82\x8d\xb7\x0fv',
                's2ma\x00\x00CN\x92\xd8\x17D\xc1D\x1b\xf6(\xedj\xb7\xe9\xd1\x94\x85\xc8`\x91M\x8btZ\x91\xf65\x1f\xf9\xdc\xd4\xe6\xbb',
                's2ma\x00\x00CN\xa1\xe9\xab\xcd?\xd2PS\xc9\x03\xab\x13R\xa6\x85u7(K2\x9d\x08\xb8k+\xe2\xdeI\xc3\xab\x7fC',
                's2ma\x00\x00CNN\xa5\xe7\xaf\xa0\x84\xe5\xbc\xe9HX\xb93S*sj\xe3\xf8\xe7\x84`\xf1Ye\x15~\xb93\x1f\xc90',
                's2ma\x00\x00CN8\xc6\x13F\x19\x1f\x97AH\xfa\x81m\xac\xc9\xa6\xa8\x90s\xfdd\x06\rL]z\xbb\x15\xdcI\x93\xd3V'],
'm_campaignIndex': 0,
'm_defaultDifficulty': 7,
'm_description': '',
'm_difficulty': '',
'm_gameSpeed': 4,
'm_imageFilePath': '',
'm_isBlizzardMap': True,
'm_mapFileName': '',
'm_miniSave': …
Run Code Online (Sandbox Code Playgroud)

python unicode encoding utf-8

6
推荐指数
2
解决办法
5154
查看次数

为什么 flexbox 在包装元素后不收缩以适应?

我想要一个最大宽度超过该宽度的 flex-box,但它也适合 flexbox 内任何给定“行”的最大大小。

我现在面临的问题是任何超出最大宽度然后包裹的元素都会导致 flexbox 仍然占据最大宽度。

这是演示该问题的代码笔的链接:

https://codepen.io/heroes-coding/pen/rNaGYmo

这是顶部容器的 html/css:

<div class="holder">
  <div class="flexbox">
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)
body {
  background: black;
}

.holder {
  width: 650px;
  background: gray;
  margin-top: 50px;
}

.flexbox {
  display: flex;
  background: blue;
  max-width: 500px;
  width: fit-content;
  flex-wrap: wrap;
}

.item {
  width: 100px;
  height: 50px;
  background: red;
  border-bottom: 1px dotted white;
  border-top: 1px dotted white;
  border-right: 1px dotted white;
}
.item.wide {
  width: …
Run Code Online (Sandbox Code Playgroud)

html css flexbox

5
推荐指数
1
解决办法
438
查看次数

标签 统计

css ×1

encoding ×1

flexbox ×1

html ×1

python ×1

unicode ×1

utf-8 ×1