Fix UTF-8 support on Python 2 (#740)
diff --git a/generator/nanopb_generator.py b/generator/nanopb_generator.py
index fecfdd1..c1c6f2c 100755
--- a/generator/nanopb_generator.py
+++ b/generator/nanopb_generator.py
@@ -150,10 +150,18 @@
matched_namemasks = set()
protoc_insertion_points = False
-# String types (for python 2 / python 3 compatibility)
-try:
+# String types and file encoding for Python2 UTF-8 support
+if sys.version_info.major == 2:
+ import codecs
+ open = codecs.open
strtypes = (unicode, str)
-except NameError:
+
+ def str(x):
+ try:
+ return strtypes[1](x)
+ except UnicodeEncodeError:
+ return strtypes[0](x)
+else:
strtypes = (str, )
diff --git a/tests/site_scons/site_init.py b/tests/site_scons/site_init.py
index d19bc20..1f52b83 100644
--- a/tests/site_scons/site_init.py
+++ b/tests/site_scons/site_init.py
@@ -22,6 +22,11 @@
except ImportError:
pass
+# UTF-8 support on Python 2
+if sys.version_info.major == 2:
+ import codecs
+ open = codecs.open
+
def add_nanopb_builders(env):
'''Add the necessary builder commands for nanopb tests.'''