使用页面处理程序时包含字符编码(丹麦语æØÅ)的问题包括hook_menu()中的文件。 -- 7 领域 和 routes 领域 drupal 相关 的问题

Problem with character encoding ( danish æ ø å ) when using page handler include files in hook_menu()


1
vote

问题

中文

当我使用.inc文件来处理我的页面输出时,所有丹麦特殊字符(æ,Ø和Å)显示为问号,即它们是用错误的字符编码呈现。

以下模块按预期工作。

stack_exchange_minimal.module

  <?php /** * Implements hook_menu(). */ function stack_exchange_minimal_menu() {   $items['mypage'] = array(     'title' => 'Minimal example',     'page callback' => 'mypage',     'access arguments' => array('access content'),     'type' => MENU_CALLBACK,   );   return $items; }  function mypage() {  return 'ÆØÅ - æøå'; //outputs 'ÆØÅ - æøå' }   

当我在两个文件中拆分代码时,它没有。

stack_exchange_minimal.module

  <?php /** * Implements hook_menu(). */ function stack_exchange_minimal_menu() {   $items['mypage'] = array(     'title' => 'Minimal example',     'page callback' => 'mypage',     'access arguments' => array('access content'),     'type' => MENU_CALLBACK,     'file' => 'stack_exchange_minimal.pages.inc',   );   return $items; }   

stack_exchange_minimal.pages.inc

  <?php function mypage() {  return 'ÆØÅ - æøå'; //outputs '��� - ���' }   

我已经尝试通过渲染阵列传递文本而不是将字符串转储为返回值,但结果相同。

我正在使用drupal核心版本7.31

我可以做些什么来解决这个问题?

英文原文

When I use an .inc file to handle my page output, all the danish special characters (xc3x86, xc3x98 and xc3x85) shows up as question marks, i.e. they are rendered with the wrong character encoding.

This following module works as expected.

stack_exchange_minimal.module

<?php /** * Implements hook_menu(). */ function stack_exchange_minimal_menu() {   $items['mypage'] = array(     'title' => 'Minimal example',     'page callback' => 'mypage',     'access arguments' => array('access content'),     'type' => MENU_CALLBACK,   );   return $items; }  function mypage() {  return 'xc3x86xc3x98xc3x85 - xc3xa6xc3xb8xc3xa5'; //outputs 'xc3x86xc3x98xc3x85 - xc3xa6xc3xb8xc3xa5' } 

When I split the code up in two files, however, it doesn't.

stack_exchange_minimal.module

<?php /** * Implements hook_menu(). */ function stack_exchange_minimal_menu() {   $items['mypage'] = array(     'title' => 'Minimal example',     'page callback' => 'mypage',     'access arguments' => array('access content'),     'type' => MENU_CALLBACK,     'file' => 'stack_exchange_minimal.pages.inc',   );   return $items; } 

stack_exchange_minimal.pages.inc

<?php function mypage() {  return 'xc3x86xc3x98xc3x85 - xc3xa6xc3xb8xc3xa5'; //outputs 'xefxbfxbdxefxbfxbdxefxbfxbd - xefxbfxbdxefxbfxbdxefxbfxbd' } 

I have tried passing the text through a render array instead of just dumping a string as the return value, but whith the same results.

I'm using drupal core version 7.31

What can I do to work around this issue?

     
   
   

回答列表

0
 
vote
vote
最佳答案
 

问题是Andy指出,该文件未在UTF-8中编码。

.inc文件是从Windows中的上下文菜单创建的:'new' - &gt; "文本文档" ,默认为ANSI编码。

解决方案只是将文件转换为UTF-8,这可以通过选择"文件" - &gt来在upblime文本中进行。 '重新打开编码'。其他文本编辑器具有类似的命令。

 

The problem was, as Andy pointed out, that the file wasn't encoded in UTF-8.

The .inc file was created from the context menu in Windows: 'New' -> 'Text Document', which defaults to the ANSI encoding.

The solution is simply to convert the file to UTF-8, that can be done for example in Sublime Text by choosing 'File' -> 'Reopen with Encoding'. Other text editors have similar commands.

 
 

相关问题

4  填充数据后更改字段选项  ( Change field options after form has been filled with data ) 
在创建我的表单时,我还没有意识到默认核心描述字段的配置。我不想要一个摘要领域,但在过去设置我的形式时,我没有付出很多关注。现在,当我尝试更改字段选项以删除摘要字段时,我收到消息"数据库中存在此字段的数据。现场设置不再更改。" 。是否有可能覆盖这种限制并强制变化? ...

11  将具有特殊字符的术语名称转换为术语ID的视图中  ( Converting term names with special characters to term ids in views ) 
我有一个观点,我想在其中使用多个terminat作为参数。我想使用URL的术语名称并将其转换为终止。我设法易于执行此操作,它通过检查"转换破折号在术语参数" 中的空格中,使用简单的1字术语或甚至多个单词。 我有几个具有特殊字符的术语,例如:"新闻&amp;政治" 。 有没有办法拥有漂亮的URL(新闻 - 政治)并获得...

0  节点内容中的自定义变量  ( Custom variables in node content ) 
是否可以在内容中使用自定义变量? 例如,我们拥有大量节点上市的产品的价格为9.99英镑...此价格变为11.99英镑。更新这个价格变得痛苦! 我们希望的是能够具有诸如[Product1Price =£9.99]的变量,我们可以在节点正文中包含。那么如果我们需要更改这个价格,我们可以编辑变量以立即更新它在系统中显示的各...

2  如何使用“节点”行样式创建节点修订视图?  ( How to create a node revision view with a node row style ) 
是可以使用"节点" 行样式创建节点修订视图? 这似乎不是视图界面中的选项。 "字段" 是为此类型的视图提供的唯一选项。有没有理由,为什么这不是技术上可能或者目前没有实施的? ...

1  如何使用以下功能执行问题/答案功能?  ( How to implement question answer functionality with following feature ) 
我想使用drupal7创建一个问题/答案网站,其中用户可以提出一个问题和其他用户可以回答该问题。在Drupal 7中实现这一个非常简单。但是我想要的附加功能是当用户询问他将通过从选择列表(5天,7天和15天等)选择到期时段。在此期间,问题的状态应显示为"打开答案" 。在此期间之后,状态应自动更改为"最佳答案" ,现在...

29  表单中的动态选择列表(依赖下拉列表)  ( Dynamic select list in the form dependent dropdown ) 
我正在使用drupal七。我想在SELECT列表中制作选项依赖于表单中另一个选择列表中选择的值。我相信这已经被询问了很多次,但我很难找到明确的答案,了解如何做到这一点。 表单用于用户输入工作历史记录。它们需要选择一个中队,该中队是对Squadron字段类型的节点引用,这是在下拉列表中。但是,中队,取决于城市下拉列表。...

1  自定义SQL:NodeReference Joins和最新视频  ( Custom sql nodereference joins and latest vid ) 
我有一个构成自定义SQL查询的时间。 查询有多个Nodereference,需要返回最新的节点修订版。 我理解得很好,但由于某种原因,返回最新版本的额外复杂性正在绊倒我。 我宁愿通过创建视图并以编程方式执行它们,仅仅因为 WHERE 条款的复杂性,就会以编程方式执行它们。 我已经尝试翻译等同的视图的输出,但是对视图粘...

3  如何使用GeoField迁移额外  ( How to use geofield migrate extras ) 
我无法理解如何使用migrate_extras,例如如何使用geofield迁移额外支持。 我创建了一个工作的迁移类。在我的"来源" 中,我有2个"田野" ,称为Latitudine和Longitudine。我遵循我在Geofiled.inc中找到的指令: $geo_arguments = array( 'l...

3  MySQL Server已经消失 - 生产网站[复制]  ( Mysql server has gone away production site ) 
这个问题已经在这里有答案: 关闭 8年前。 可能的重复: 解决"MySQL Server已经消失" ,MySQL错误2006 我的网站将从localhost移动到虚拟托管,1周后,我收到错...

6  如何将数据从Drupal导出到Excel?  ( How to export data from drupal to excel ) 
我继承了一个drupal网站。我需要将主页数据从网站中提取,以便能够将其导入不同的系统,但我从未使用过Drupal,网站实际上,所以我需要仔细踩踏,以便在不影响的情况下提取数据网站。 目前该网站有许多制造商的内容页面。每个制造商都有名称,描述,某些图像和其他(主要文本)数据。例如,这些制造商中有2000年。我真的希望...

3  上传到Web-Server时的页面以外的页面错误的404错误  ( 404 errors for pages other than homepage when uploaded to web server ) 
我和新的php,我开始用drupal开始,这是我的演示网站 http://sugandha.net63。 net / 我的设置如下: $databases = array ( 'default' => array ( 'default' => array ( 'datab...

1  表单构建器模块不在Drupal 7中工作  ( Form builder module not working in drupal 7 ) 
可以有人确认是否表单构建器模块正在工作。我查看 .module ,似乎路径仍在使用Drupal 6格式。 ...

0  drupal_add_js会导致块执行两次  ( Drupal add js causes blocks to be executed twice ) 
我将此代码添加到template.php(在zen subtheme中): function mytheme_preprocess_page(&$vars) { if ($vars['is_front']) { drupal_add_js (libraries_get_path('jquery.cyc...

2  将默认值设置为空结果,视图暴露过滤器  ( Set default to empty result with views exposed filters ) 
我正在使用视图(7.x-3.0-beta3),我已经为视图创建了一个公开的文本过滤器,工作正常。 问题是默认结果值:当字段为空时,显示所有可能的结果。但我想默认情况下显示空结果。如果您有解决方案,请剪切。 ...

7  如何创建钩子以改变每个节点表单?  ( How to create hook for altering every node form ) 
我试过: mymodule_form_node_alter mymodule_form_node_form_alter 和全球钩子: function mymodule_form_alter(&$form, $form_state, $form_id) { if ($form['#id'] == ...




© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有