We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Opening any PCB containing non-ASCII characters on Windows results in:
>>> from fcad_pcb import kicad >>> pcb = kicad.KicadFcad('C:/Users/username/projects/pcb/pcb1.kicad_pcb') Traceback (most recent call last): File "<input>", line 1, in <module> File "C:\Users\username\AppData\Roaming\FreeCAD\Macro\fcad_pcb\kicad.py", line 606, in __init__ self.pcb = KicadPCB.load(self.filename, self.quote_no_parse) File "C:\Users\username\AppData\Roaming\FreeCAD\Macro\fcad_pcb\kicad_parser\kicad_pcb.py", line 93, in load return KicadPCB(parseSexp(f.read(), quote_no_parse)) File "C:\Users\username\AppData\Local\Programs\FreeCAD 0.21\bin\lib\encodings\cp1257.py", line 23, in decode return codecs.charmap_decode(input,self.errors,decoding_table)[0] UnicodeDecodeError: 'charmap' codec can't decode byte 0x9c in position 289: character maps to <undefined> >>>
Also had a similar problem when kicad_common.json contained working_dir with non-ASCII characters.
kicad_common.json
working_dir
Had to make 2 changes to fix. Probably a good idea to review all of the open() calls?
open()
One change in kicad_parser/kicad_pcb.py
kicad_parser/kicad_pcb.py
diff --git a/kicad_pcb.py b/kicad_pcb.py index 35f0eb1..fc6880e 100644 --- a/kicad_pcb.py +++ b/kicad_pcb.py @@ -89,6 +89,6 @@ class KicadPCB(SexpParser): @staticmethod def load(filename, quote_no_parse=None): - with open(filename,'r') as f: + with open(filename,'r', encoding='utf-8') as f: return KicadPCB(parseSexp(f.read(), quote_no_parse))
Another in kicad.py
kicad.py
diff --git a/kicad.py b/kicad.py index 70af34b..8eab7c1 100644 --- a/kicad.py +++ b/kicad.py @@ -480,7 +480,7 @@ def getKicadPath(env=''): logger.warning('cannot find kicad_common') return None logger.info("Found kicad_common at {}".format(kicad_common)) - with open(kicad_common,'r') as f: + with open(kicad_common,'r',encoding='utf-8') as f: content = f.read() match = re.search(r'^\s*"*KISYS3DMOD"*\s*[:=]\s*([^\r\n]+)',content,re.MULTILINE) if not match: diff --git a/kicad_parser b/kicad_parser --- a/kicad_parser +++ b/kicad_parser @@ -1 +1 @@ -Subproject commit 75528791a994ad1ba60e5d927b4b9b5587949a83 +Subproject commit 75528791a994ad1ba60e5d927b4b9b5587949a83-dirty
Actually I'm not sure why the Windows system encoding is used at all, FreeCAD python console shows utf-8 is default?
>>> import sys; print(sys.getdefaultencoding()) utf-8 >>>
The text was updated successfully, but these errors were encountered:
Setting environment variable PYTHONUTF8=1 does not work with FreeCAD.
PYTHONUTF8=1
According to this: https://forum.freecad.org/viewtopic.php?p=451120#p451120
Found working fix that does not require patching fcad_pcb and kicad_parser.
Before importing fcad_pcb:
import _locale _locale._getdefaultlocale = (lambda *args: ['en_US', 'utf8'])
Sorry, something went wrong.
No branches or pull requests
Opening any PCB containing non-ASCII characters on Windows results in:
Also had a similar problem when
kicad_common.json
containedworking_dir
with non-ASCII characters.Had to make 2 changes to fix. Probably a good idea to review all of the
open()
calls?One change in
kicad_parser/kicad_pcb.py
Another in
kicad.py
Actually I'm not sure why the Windows system encoding is used at all, FreeCAD python console shows utf-8 is default?
The text was updated successfully, but these errors were encountered: