版本:Python 2.7.3
其他库:Python-Requests 1.2.3,jinja2(2.6)
我有一个脚本将数据提交到论坛,问题是非ascii字符显示为垃圾.例如AndréTéchiné这样的名字就像AndréTéchéé一样出现.
以下是数据的提交方式:
1)数据最初是从UTF-8编码的CSV文件加载的,如下所示:
entries = []
with codecs.open(filename, 'r', 'utf-8') as f:
for row in unicode_csv_reader(f.readlines()[1:]):
entries.append(dict(zip(csv_header, row)))
Run Code Online (Sandbox Code Playgroud)
unicode_csv_reader位于Python CSV文档页面的底部:http://docs.python.org/2/library/csv.html
当我在解释器中键入条目名称时,我将名称视为u'Andr\xe9 T\xe9chin\xe9'.
2)接下来我通过jinja2渲染数据:
tpl = tpl_env.get_template(u'forumpost.html')
rendered = tpl.render(entries=entries)
Run Code Online (Sandbox Code Playgroud)
当我输入在解释器中呈现的名称时,我再次看到相同的: u'Andr\xe9 T\xe9chin\xe9'
现在,如果我将渲染变量写入这样的文件名,它会正确显示:
with codecs.open('out.txt', 'a', 'utf-8') as f:
f.write(rendered)
Run Code Online (Sandbox Code Playgroud)
但我必须把它发送到论坛:
3)在POST请求代码中我有:
params = {u'post': rendered}
headers = {u'content-type': u'application/x-www-form-urlencoded'}
session.post(posturl, data=params, headers=headers, cookies=session.cookies)
Run Code Online (Sandbox Code Playgroud)
session是一个请求会话.
并且在论坛帖子中显示了该名称.我尝试过以下方法:
如果我输入rendered.encode('utf-8'),我会看到以下内容:
'Andr\xc3\xa9 T\xc3\xa9chin\xc3\xa9'
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?谢谢.
我曾尝试使用纯粹的对象开发一个使用C++的2D游戏,但是,在设计过程中,我不知道引擎的哪些部分和哪些部分应该分成更小的对象,它们应该做什么以及如何做让他们恰当地互相交流.我正在寻找书籍,教程,论文,以及详细解释游戏引擎设计的任何内容.谢谢.
我不确定如何用最好的方式来表达它,但我正在寻找的是一种在网页上显示数据的方法.示例:在网页上显示IRC频道消息,当消息发送到IRC频道时,消息同时(或极短的延迟)输出到网页.或者当数据被插入数据库时,它同时被输出到网页(再次,或者以非常小的延迟).这样的功能是如何实现的?可以用JS/JQuery实现这样的功能吗?我假设是的,因为这就是Mibbit的工作方式(AJAX).一个示例或伪代码解释将不胜感激,因为我完全不知道从哪里开始和我需要什么.
我想知道上面哪种方法是首选的,或者是使用$(elem).click()来处理简单事情的一般准则和<a onclick ="func(1,2,3,4);" >何时需要在单击元素时将参数传递给脚本?我一直在尝试只使用$(elem).click()来保持代码干净简单,但是当你必须传递多个参数时它会变得棘手并且函数调用onclick =""似乎是一个更好的解决方案.
求助:模板文件出错
我有这样的Smarty设置:
require_once 'smarty/Smarty.class.php';
$smarty = new Smarty();
$smarty->compile_dir = $compile_dir;
$smarty->template_dir = $tpl_dir;
Run Code Online (Sandbox Code Playgroud)
这就是我现在应该需要的......我为其他网站设置了完全像这样的Smarty,它在同一台服务器上工作得很好.
var_dump($smarty)输出所有的公共变量和$smarty->template_exists("index.tpl")回报1,这既表明Smarty的正确设置和工作,但是,无论是$smarty->display("index.tpl")与$output = $smarty->fetch("index.tpl"); echo $output;输出空白页.index.tpl文件肯定包含HTML.
我忘记了一些步骤还是什么?
编辑:
添加
ini_set('display_errors', true);
error_reporting(E_ALL + E_NOTICE);
Run Code Online (Sandbox Code Playgroud)
还为Smarty创建了配置目录.
并尝试过$output = $smarty->fetch("index.tpl"); var_dump($output).
还是空白页面.
如果我echo "foo";在$smarty->display("index.tpl")它之前输出该行,但是如果我在它之后执行它,则它不会输出它.
我正在为Qt 4(C++/Windows)寻找一个视频库:
1)基本视频播放功能
它应该播放所有常见的视频格式,如DVD VOB和MP4/MKV/AVI(h264,xvid,divx).它还应该能够自动对视频进行去交错并以显示宽高比显示.
2)裁剪
它应该具有一些基本功能来删除黑条(用户提供的参数).
3)快照
它应该具有在内存中拍摄快照的功能.
4)逐帧搜索
它应具有一些基本功能来进行逐帧搜索,例如prevFrame(),nextFrame(),jumpTo(frame)和getNumFrames().
我尝试了以下内容,并从我可以找到它们支持的功能:
Qt Phonon:
QtFFmpegWrapper:
Qt VLC:
现在我正在看QVision,除了裁剪之外,它似乎具有所有这些功能.也许实施种植并不困难.但我想知道是否还有其他库我应该研究一下?或者也许我错过了一些东西,他们可以使用其中一个库.谢谢.
$.getJSON('ajax_popup.php', function(data)
{
var popupDiv = decodeURIComponent(data.data);
$('body').append( popupDiv );
});
Run Code Online (Sandbox Code Playgroud)
这段代码返回<div>包含其他XHTML元素的元素.它使用JQuery以JSON格式返回.data.data通过首先解码UTF-8编码数据,将返回的XHTML 存储到JavaScript变量中.DIV元素是一个自定义弹出窗口.上面的代码工作,但我想使用JQuery UI的.draggable()方法使其可拖动,但我不知道在哪里使用它以及如何使它在这种情况下工作.
我试过了:
popupDiv.draggable();
Run Code Online (Sandbox Code Playgroud)
但它没有用.
和:
$('body').append( popupDiv ).draggable();
Run Code Online (Sandbox Code Playgroud)
但它使身体元素可以拖拽:D
游戏的主要部分通常在所有游戏(用户输入,图形,AI,菜单,碰撞检测,声音,作弊,关卡,配置等等)中找到.我应该首先实现和关注,我该怎么做离开最后?
我正在为留言板编写代码,当用户正在撰写帖子并点击"预览"时,它会创建一个包含已解析帖子的新DIV元素.我需要检测何时创建此预览元素并修改其内容.以下代码在Chrome中创建无限递归,Firefox在5次递归后停止.
$('#c_post').on('DOMNodeInserted', function(){
var $preview = $('#c_post-preview');
if($preview.length) {
$preview.html(applyForEach(funcs, $preview.html()));
}
});
Run Code Online (Sandbox Code Playgroud)
它与applyForEach无关,因为我刚刚添加了该代码,之前我收到了递归错误,但无论如何这里是代码:
function applyForEach(arr, s) {
for(var i = 0; i < arr.length; ++i) {
s = arr[i](s);
}
return s;
}
var funcs = [createGifvVideo, createGfycatVideo, createHtml5Video];
Run Code Online (Sandbox Code Playgroud)
这些函数只需要一个字符串,对它调用replace,然后返回字符串.
我有一个用简单模板构建的网站; header.tpl,navigation.tpl,body_home.tpl,body_about.tpl,body_anotherpage.tpl等.navigation.tpl包含jQuery,用于动态构建下拉导航菜单.在第一个下拉菜单中单击元素时,将根据单击的元素构建下一个元素.在某些时候,没有更多的下降并且设置了变量,例如:var action ="dropdowncomplete".现在,在body _*.tpl模板文件中,当动作==="dropdowncomplete"的计算结果为true时,会运行更多的jQuery.但是,我不知道如何使用jQuery(也不是JS)进行此检查.这是一段简化的代码来说明它是如何工作的:
/* header.tpl (<head>) - setting this global variable */
var action = null;
/* navigation.tpl - for simplicity's sake, when link is clicked, the var is set */
$(document).ready(function() {
$('a').live('click', function() {
action = "dropdowncomplete";
}); });
/* body_*.tpl - this should be executed when the var is set, in this case when a link is clicked */
if(action === "dropdowncomplete") {
// do something
}
Run Code Online (Sandbox Code Playgroud)
请注意,以上3个JS/jQuery代码都在不同的脚本块中!
谢谢.
jquery ×4
c++ ×2
javascript ×2
game-engine ×1
insert ×1
mysql ×1
oop ×1
php ×1
python ×1
python-2.7 ×1
qt ×1
real-time ×1
scripting ×1
smarty ×1
theory ×1