<p>找到这个解决方案是件痛苦的事。这是一个Windows解决方案。从你的帖子里不清楚你在用什么操作系统。经验教训:</p>
<ul>
<li>Windows使用不同于*nixs的区域设置拼写。它必须是<code>trk</code>或{<cd2>}。<a href="https://msdn.microsoft.com/en-us/library/39cwe7zf(v=vs.90).aspx" rel="nofollow">https://msdn.microsoft.com/en-us/library/39cwe7zf(v=vs.90).aspx</a></li>
<li>传递给datetime的字符串必须使用首选区域设置编码进行编码。在本例中,<code>cp1254</code>。<code>getlocale()</code>表示正确的编码。<a href="https://docs.python.org/2/library/datetime.html" rel="nofollow">https://docs.python.org/2/library/datetime.html</a>(底部注1)。在</li>
<li>Python不传递<a href="http://www.moserware.com/2008/02/does-your-code-pass-turkey-test.html" rel="nofollow">Turkey Test</a>。Python2.7.9(至少)在<code>strptime</code>中有一个错误,它不接受<em>ubat</em>,而是接受<em>ubat</em>。解决方案是在处理之前<code>.lower()</code>字符串。Python2和3的months大写版本也有问题。在</li>
</ul>
<h3>Python解决方案
<p>下面是<code>.lower()</code>解决方案。我特别使用了<code>utf-8</code>的源代码来明确<code>strptime</code>使用的字符串必须是正确的<code>cp1254</code>编码。在</p>
<pre><code># coding: utf8
import locale
import datetime
locale.setlocale(locale.LC_ALL,'turkish')
print(locale.getlocale())
h = u"14 Şubat 2015 Cumartesi, 09:47:49"
kc = datetime.datetime.strptime(h.lower().encode('cp1254'), '%d %B %Y %A, %H:%M:%S')
print kc
</code></pre>
<p>输出:</p>
^{pr2}$
<h3>Python 3.4.2解决方案</h3>
<p>python3默认使用Unicode来处理所有事情,这使得事情变得更简单,<em>Şubat</em>的情况问题也得到了修复。在</p>
<pre><code># coding: utf8
import locale
import datetime
locale.setlocale(locale.LC_ALL,'turkish')
print(locale.getlocale())
h = '14 Şubat 2015 Cumartesi, 09:47:49'
kc = datetime.datetime.strptime(h, '%d %B %Y %A, %H:%M:%S')
print(kc)
</code></pre>
<p>输出:</p>
^{pr2}$