• 解決 ValueError: embedded null byte 錯誤

解決 ValueError: embedded null byte 錯誤

一直以來,某些使用 Python 3.5(無論 Anaconda 與否)的 Windows 電腦會無法使用 Pelican 轉換網誌。

於是加入 --debug 指令檢查。

    ...

    File "c:\users\...\pelican\utils.py", line 101, in strftime
        return super(SafeDatetime, self).strftime(fmt)
ValueError: embedded null byte

重新搜尋了這個問題,找到了一篇新的文章:

http://xingjian.me/how-to-fix-value-error-embedded-null-byte-error.html

於是到 cmd 的 Python 直譯器打入下列指令檢查:

import locale, time
locale.setlocale(locale.LC_ALL, 'ko')
time.strftime('%a')

Python Rise 了相同的錯誤如下:

解決方式就是重新設定 local 的設定。

到 Python 或 Anaconda 的資料夾中找到 pelican,編輯其 utils.py 檔案(如:Python35\Lib\site-packages\pelican\utils.py)。

搜尋 def strftime(date, date_format) 這個函式。

在函式這片註解後加入 locale.setlocale(locale.LC_ALL, 'en') 指令,如下:

def strftime(date, date_format):
    '''
    Replacement for built-in strftime

    ...

    This works by 'grabbing' possible format strings (those starting with %),
    formatting them with the date, (if necessary) decoding the output and
    replacing formatted output back.
    '''
    locale.setlocale(locale.LC_ALL, 'en')

之後存檔關閉即可。

接著就能使用 Pelican 的功能了。


Comments

comments powered by Disqus