Today I update platformio and see bug when try build project

UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 410-419: ordinal not in range(128):
File “/Users/nixoid/.platformio/penv/lib/python2.7/site-packages/platformio/builder/main.py”, line 158:
env.SConscript("$BUILD_SCRIPT")

I am having the same error after upgrading to 3.5.2a4.
The error is reproducible when building espurna 1.12.1 (repo at GitHub - xoseperez/espurna: Home automation firmware for ESP8266-based devices)

output

$ pio run -e itead-s20

[…]
Verbose mode can be enabled via -v, --verbose option
System: ESP8266 80MHz RAM/80K Flash/1M
UnicodeEncodeError: ‘ascii’ codec can’t encode character u’\xe9’ in position 130: ordinal not in range(128):
File “/home/alpha/.platformio/penv/local/lib/python2.7/site-packages/platformio/builder/main.py”, line 158:
env.SConscript(“$BUILD_SCRIPT”)
File “/home/alpha/.platformio/packages/tool-scons/script/…/engine/SCons/Script/SConscript.py”, line 551:
return _SConscript(self.fs, *files, **subst_kw)
File “/home/alpha/.platformio/packages/tool-scons/script/…/engine/SCons/Script/SConscript.py”, line 256:
call_stack[-1].globals)
File “/home/alpha/.platformio/platforms/espressif8266@src-428e6fe6a638295277b17b20ae60f081/builder/main.py”, line 375:
target_elf = env.BuildProgram()
File “/home/alpha/.platformio/packages/tool-scons/script/…/engine/SCons/Environment.py”, line 224:
return self.method(*nargs, **kwargs)
File “/home/alpha/.platformio/penv/local/lib/python2.7/site-packages/platformio/builder/tools/platformio.py”, line 63:
env.BuildFrameworks(env.get(“PIOFRAMEWORK”))
File “/home/alpha/.platformio/packages/tool-scons/script/…/engine/SCons/Environment.py”, line 224:
return self.method(*nargs, **kwargs)
File “/home/alpha/.platformio/penv/local/lib/python2.7/site-packages/platformio/builder/tools/platformio.py”, line 261:
env.ConvertInoToCpp()
File “/home/alpha/.platformio/packages/tool-scons/script/…/engine/SCons/Environment.py”, line 224:
return self.method(*nargs, **kwargs)
File “/home/alpha/.platformio/penv/local/lib/python2.7/site-packages/platformio/builder/tools/piomisc.py”, line 189:
out_file = c.convert(ino_nodes)
File “/home/alpha/.platformio/penv/local/lib/python2.7/site-packages/platformio/builder/tools/piomisc.py”, line 54:
return self.process(contents)
File “/home/alpha/.platformio/penv/local/lib/python2.7/site-packages/platformio/builder/tools/piomisc.py”, line 77:
assert self._gcc_preprocess(contents, out_file)
File “/home/alpha/.platformio/penv/local/lib/python2.7/site-packages/platformio/builder/tools/piomisc.py”, line 88:
fp.write(contents)
================================== [ERROR] Took 66.00 seconds ==================================

========================================== [SUMMARY] ==========================================
Environment espurna-core [SKIP]
Environment wemos-d1mini-relayshield [SKIP]
Environment wemos-d1mini-relayshield-ssl [SKIP]
Environment wemos-d1mini-relayshield-ota [SKIP]
Environment nodemcu-lolin [SKIP]
Environment nodemcu-lolin-ssl [SKIP]
Environment nodemcu-lolin-ota [SKIP]
Environment tinkerman-espurna-h06 [SKIP]
Environment tinkerman-espurna-h06-ota [SKIP]
Environment tinkerman-espurna-h08 [SKIP]
Environment tinkerman-espurna-h08-ota [SKIP]
Environment tinkerman-espurna-switch [SKIP]
Environment itead-sonoff-basic [SKIP]
Environment itead-sonoff-basic-ota [SKIP]
Environment itead-sonoff-basic-dht [SKIP]
Environment itead-sonoff-basic-dht-ota [SKIP]
Environment itead-sonoff-basic-dallas [SKIP]
Environment itead-sonoff-rf [SKIP]
Environment itead-sonoff-rf-ota [SKIP]
Environment itead-sonoff-th [SKIP]
Environment itead-sonoff-th-ota [SKIP]
Environment itead-sonoff-pow [SKIP]
Environment itead-sonoff-pow-ota [SKIP]
Environment itead-sonoff-dual [SKIP]
Environment itead-sonoff-dual-ota [SKIP]
Environment itead-sonoff-dual-r2 [SKIP]
Environment itead-sonoff-dual-ota-r2 [SKIP]
Environment itead-sonoff-4ch [SKIP]
Environment itead-sonoff-4ch-ota [SKIP]
Environment itead-sonoff-4ch-pro [SKIP]
Environment itead-sonoff-4ch-pro-ota [SKIP]
Environment itead-sonoff-touch [SKIP]
Environment itead-sonoff-touch-ota [SKIP]
Environment itead-sonoff-b1 [SKIP]
Environment itead-sonoff-b1-ota [SKIP]
Environment itead-sonoff-t1-1ch [SKIP]
Environment itead-sonoff-t1-1ch-ota [SKIP]
Environment itead-sonoff-t1-2ch [SKIP]
Environment itead-sonoff-t1-2ch-ota [SKIP]
Environment itead-sonoff-t1-3ch [SKIP]
Environment itead-sonoff-t1-3ch-ota [SKIP]
Environment itead-sonoff-led [SKIP]
Environment itead-sonoff-led-ota [SKIP]
Environment itead-sonoff-rfbridge [SKIP]
Environment itead-sonoff-rfbridge-ota [SKIP]
Environment itead-slampher [SKIP]
Environment itead-slampher-ota [SKIP]
Environment itead-s20 [ERROR]
Environment itead-s20-ota [SKIP]
Environment itead-1ch-inching [SKIP]
Environment itead-1ch-inching-ota [SKIP]
Environment itead-motor [SKIP]
Environment itead-motor-ota [SKIP]
Environment electrodragon-wifi-iot [SKIP]
Environment electrodragon-wifi-iot-ota [SKIP]
Environment workchoice-ecoplug [SKIP]
Environment workchoice-ecoplug-ota [SKIP]
Environment jangoe-wifi-relay [SKIP]
Environment jangoe-wifi-relay-ota [SKIP]
Environment openenergymonitor-mqtt-relay [SKIP]
Environment openenergymonitor-mqtt-relay-ota [SKIP]
Environment jorgegarcia-wifi-relays [SKIP]
Environment jorgegarcia-wifi-relays-ota [SKIP]
Environment aithinker-ai-light [SKIP]
Environment aithinker-ai-light-ota [SKIP]
Environment magichome-led-controller [SKIP]
Environment magichome-led-controller-ota [SKIP]
Environment magichome-led-controller-20 [SKIP]
Environment magichome-led-controller-20-ota [SKIP]
Environment huacanxing-h801 [SKIP]
Environment huacanxing-h801-ota [SKIP]
Environment huacanxing-h802 [SKIP]
Environment huacanxing-h802-ota [SKIP]
Environment arilux-al-lc01 [SKIP]
Environment arilux-al-lc01-ota [SKIP]
Environment arilux-al-lc02 [SKIP]
Environment arilux-al-lc02-ota [SKIP]
Environment arilux-al-lc06 [SKIP]
Environment arilux-al-lc06-ota [SKIP]
Environment arilux-al-lc11 [SKIP]
Environment arilux-al-lc11-ota [SKIP]
Environment arilux-e27 [SKIP]
Environment arilux-e27-ota [SKIP]
Environment itead-bnsz01 [SKIP]
Environment itead-bnsz01-ota [SKIP]
Environment wion-50055 [SKIP]
Environment wion-50055-ota [SKIP]
Environment exs-wifi-relay-v31 [SKIP]
Environment exs-wifi-relay-v31-ota [SKIP]
Environment wemos-v9261f [SKIP]
Environment wemos-v9261f-ota [SKIP]
Environment esp01-v9261f [SKIP]
Environment esp01-v9261f-ota [SKIP]
Environment wemos-ech1560 [SKIP]
Environment wemos-ech1560-ota [SKIP]
Environment esp01-ech1560 [SKIP]
Environment esp01-ech1560-ota [SKIP]
Environment mancavemade-esplive [SKIP]
Environment mancavemade-esplive-ota [SKIP]
Environment intermittech-quinled [SKIP]
Environment intermittech-quinled-ota [SKIP]
Environment xenon-sm-pw702u [SKIP]
Environment xenon-sm-pw702u-ota [SKIP]
Environment authometion-lyt8266 [SKIP]
Environment authometion-lyt8266-ota [SKIP]
Environment yjzk-switch-2ch [SKIP]
Environment yjzk-switch-2ch-ota [SKIP]
Environment generic-8ch [SKIP]
Environment esp8266-1m-ota [SKIP]
Environment esp8266-4m-ota [SKIP]
================================== [ERROR] Took 66.00 seconds ==================================

OS is Ubuntu 16.04.3, updated today.

I checked the SCons mailing list[1] and there seems to be something broken in SCons 3.0.1 leading to a similar error in a different case.

Perhaps it would be possible to downgrade tool-scons to something before 3.30001.0, thus avoiding the breakage? Alas, I could not find an option or parameter in the pio documentation, allowing downgrade of a dependency package.

Any ideas?

[1] [Scons-users] scons 3.0.1: 'ascii' codec can't decode

I tried to downgrade to 3.20501.2 by putting "tool-scons": ">=3.20000.0,<3.30000.0" in penv/lib/python2.7/site-packages/platformio/managers/core.py

Apparently there are features missing in the older version of tool-scons
AttributeError: 'module' object has no attribute 'CConditionalScanner':

So, downgrading is not an option.

At first glance I am not quite sure where the data in env.SConscript("$BUILD_SCRIPT") originates (penv/lib/python2.7/site-packages/platformio/builder/main.py line 158)

Downgrading is the easiest solution

$ . ./.platformio/penv/bin/activate
$ pip install platformio==3.5.1
$ cd PIO/espurna
$ pio run -e itead-s20 -v
[…]
CorePackageManager: Installing tool-scons @ ~3.20501.2
Downloading [####################################] 100%
Unpacking [####################################] 100%
tool-scons @ 3.20501.2 has been successfully installed!
[…]`

resulting in a good compile and working firmware image.

Thanks byteborg for the work around. I thought I was the only one in this situation and wasted a good hour searching for the source of the problem.

Because I’m not very familliar with platformio, I just replaced all the unicode characters with ascii ones.

Your work around is better though :slight_smile:

Could you try the latest PIO Core? pio upgrade —dev. Does it work now?

Hi @ivankravets. I have run the upgrade. The version shown now is 3.5.2a5. Compilation seems to be working even when I add non-ascii characters like “é”. Thanks. :+1:

@ivankravets all good with 3.5.2a5! Works like a charm!
Thank you very much!