Can't set/get from OS environments properly escaped string that containing "\" char, using docker-compose and Python docker image (python:3.7.5-stretch).
.env file:
VAR1=abc
VAR2=ABC\{DEFGHIJ
docker-compose file
version: '3'
services:
python:
env_file:
- .env
...
python from docker
>> print(os.environ["VAR1"])
'ABC'
>> print(os.environ["VAR2"])
'ABC\\{DEFGHIJ'
Other tests I've done (.env => Python)
ABC\\{DEFGHIJ => ABC\\\\{DEFGHIJ
ABC\\\{DEFGHIJ => ABC\\\\\\{DEFGHIJ
'ABC\{DEFGHIJ' => "'ABC\\{DEFGHIJ'"
"ABC\{DEFGHIJ" => '"ABC\\{DEFGHIJ"'
'ABC\\{DEFGHIJ' => "'ABC\\\\{DEFGHIJ'"
It works fine on Ubuntu 18 (as a host), but it gives such strange results on Ubuntu 16.
I solved it on the python code side:
def os_env_escape(value: str) -> str:
return value.encode("utf-8").decode("unicode-escape").encode("latin1").decode("utf-8")
>> print(os.environ["VAR2"])
'ABC\\{DEFGHIJ'
>> print(os_env_escape(os.environ["VAR2"]))
'ABC\{DEFGHIJ'
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.