Tapestry:字符编码问题

2023-12-09

我有一个 Tapestry 应用程序,它从表单中检索数据,将其写入数据库,然后显示结果。只要不使用特殊字符(ä、Ö、Ü、ß、€ ...),一切都可以正常工作。

例如。文本

TestäöüßÄÖÜ€$ 

将导致

TestäöüÃÃÃÃâ¬$

我猜这个问题与错误的字符编码设置有关。

Tapestry java 类:

@Component(parameters = {"clientValidation=false"})
private Form form;

@Component(parameters = {"value=someDTO.name"})
private TextField someNameField;

挂毯模板:

<t:form t:id="form">
    ...
    <t:textfield t:id="someNameField"/>
    ...
</t:form>

我在几个地方检查了我的编码设置:

  1. HTML 源:
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  1. Tapestry 设置(无论如何这应该是默认设置):

    tapestry.charset=UTF-8
    
  2. Firefox 显示(工具>页面信息:编码):UTF-8。

  3. 底层数据库(Oracle)也使用UTF-8:

    character_set_system    utf8
    

然后我检查了 POST 请求的标头,有两件事引起了我的注意:

  1. 标头中未指定内容类型。我期望这样的事情:

    Content-Type: application/x-www-form-urlencoded; charset=UTF-8
    
  2. 空格用 + 编码,而不是 %20。

我还尝试了以下方法:

@Component(parameters = {"clientValidation=false", "enctype='application/x-www-form-urlencoded; charset=UTF-8'"})
private Form form;

and

@Component(parameters = {"clientValidation=false", "enctype='application/x-www-form-urlencoded; charset=UTF-8'", "accept-charset='utf-8'"})
private Form form;

但两者都没有成功(我正在寻找通用解决方案而不是解决方法)。

有趣的是这个提案适用于一些特殊字符(如 ä、ö、ü、ß 等),但我不想使用 ISO-8859-1。如何将 Tapestry 用于表单的编码设置为 UTF-8?我错过了什么或者我的问题是否有完全不同的原因?

EDIT:我在没有数据库的情况下进行了测试,问题仍然存在,所以这与数据库端的错误编码设置无关。


这确实是我的服务器配置错误。我的 web.xml 中的以下添加解决了这个问题(当然这也应该适用于非 Spring 过滤器)。

<filter>
    <filter-name>charsetFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
</filter>

<filter-mapping>
    <filter-name>charsetFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Tapestry:字符编码问题 的相关文章

  • 数据库字段中的空白不会被trim()删除

    我在 MySQL 的文本字段的段落开头有一些空格 Using trim var text field 在 PHP 中或TRIM text field MySQL 中的语句绝对不执行任何操作 这个空白可能是什么以及如何通过代码删除它 如果我进
  • 将以utf-8字符串为内容的unicode转换为str

    我正在使用 pyquery 来解析页面 dom PyQuery http zh wikipedia org w index php title CSS printable yes variant zh cn content dom mw c
  • HTML 表单检查空字段

    我已经在 HTML 表单中实现了输入验证 但是 如果出现任何错误 它不会提示用户 并且仍然继续将其数据发送到测试服务器 下面是我的代码
  • 如何使用 jQuery 创建动态表单?

    我已经看到很多有关动态添加行或字段的帮助 但我对控制相互依赖的字段感兴趣 例如 我有一个包含 3 个用户输入的表单
  • jquery 表单滑块(输入滑块)

    如何用 jquery 制作滑块 就像这里一样 用户应从滑块中选择一个值 该值应自动输入 我找不到合适的插件 http jqueryui com demos slider http jqueryui com demos slider slid
  • 检查 Python 中的有效 utf8 字符串

    我正在从文件系统读取文件名 并且想将它们作为 JSON 编码数组发送 问题是文件系统上的文件可以以无效的编码存储 我需要处理这种情况以在将其传递给之前省略无效的文件名json dump 否则会失败 有没有办法检查我的字符串 文件名 是否包含
  • JQuery 在提交之前需要复选框和单选按钮

    我很难弄清楚这一点 现在我们已经花了 3 个多小时来研究 JQuery 验证的示例和工具 我想做的只是要求选中一个复选框和一个单选按钮 但我不在乎需要哪一个
  • 如何使用mb_detect_encoding检测编码是否正确?

    我想检测编码是否正确 但我发现 mb detect encoding 总是得到错误结果 并且我添加了很多encoding list UTF8 ISO 8859 你试图做的事情只是有时作品 编码检测并不是一门精确的 科学 因此您能做的最好的事
  • 如何修复 Django 应用程序的评论视图中的此错误?

    我正在尝试用 Django 开发一个应用程序 目前 我正在尝试创建一个评论部分 供用户使用表单撰写和提交评论 我制作了一个模板 显示电影的信息以及用户可以对电影发表评论的表单 问题是 当我编写评论并尝试提交时 会出现此错误 myapp2 2
  • 如何转换 UTF-8 <-> UTF16 可移植

    有没有一种简单 可移植的方法 至少是 win32 linux 将 UTF 16 转换为 UTF 8 并返回 最好使用升压 谢谢你的帮助 托比亚斯 Both libiconv http www gnu org software libicon
  • 当将utf-8编码的字符串从字节转换为字符时,计算机如何知道字符在哪里结束?

    给定一个以 UTF 8 编码的 Unicode 字符串 它只是内存中的字节 如果计算机想要将这些字节转换为其相应的 Unicode 代码点 数字 它如何知道一个字符在哪里结束 另一个字符在哪里开始 有些字符用 1 个字节表示 有些字符最多用
  • Rails f.check_box 设置选中/未选中值

    所以我在 Rails 中得到了一个带有复选框的表单助手 我希望该复选框在选中或取消选中时具有 thatvalue 或 thisvalue 值 我还没有找到如何设置它的地方 f check box field 我发现了类似的东西 但它不起作用
  • 在node.js中使用pug在表单“post”之后发送空的{}

    我正在尝试使用 fetch 和以下 pug 代码通过 post 将表单数据从登录页面传递到登录页面 form id form login input type text name email value placeholder Tu ema
  • JavaScript 表单提交 - 确认或取消提交对话框

    对于带有询问字段是否填写正确的警报的简单表单 我需要一个执行此操作的函数 单击按钮时显示警告框 有两个选项 如果单击 确定 则提交表单 如果单击 取消 警报框将关闭 并且可以调整并重新提交表单 我认为 JavaScript 确认可以工作 但
  • 检测 PHP 中字符串的字符集(UTF-8 或 Windows-1256)

    我正在根据 简单的 HTML DOM http simplehtmldom sourceforge net 并且我想在获取 URL 的内部文本后检测字符串的字符集 以使用以下命令将其转换为 UTF 8 iconv 我尝试了很多东西 但没有一
  • PHP - 存储和计算无线电输入的总分

    我设计了一个基于网络的小型系统 其中有一个学校评估表 可以向可以访问该系统的特定用户询问一些问题 并且输入将是单选类型 1或2或3或4 该代码正在运行 可以将输入插入数据库 但我不知道计算总分并将其存储在数据库中的正确查询 这是当前正在运行
  • TCPDF UTF-8 符号未显示

    我使用最新的 TCPDF 版本 5 9 但在编码方面遇到一些奇怪的问题 我需要立陶宛语语言符号 例如 但只能得到其中的一小部分 其他的还是这样 所以我该怎么做 我使用默认的 times 字体 它带有 TCPDF 下载 任何帮助 将不胜感激
  • 如何正确清理来自 AngularJS 控制器的无效输入的表单?

    我有一个 AngularJS 表单 其中包含 除其他字段之外 类型之一url 后者很重要 因为这会强制相应的输入成为有效的 URL 在某些条件下 例如 要关闭具有此类表单的模式对话框 我想以编程方式清除该表单 为此 我实现了方法reset基
  • 如何为名称为数组的 jquery 表单验证插件创建规则?

    有谁知道当您有一个数组的名称属性时如何为 jquery 表单验证插件创建规则 eg
  • 如何在react-bootstrap中禁用表单提交的

    在下面的代码片段中 我有许多文本类型的输入表单 如果用户点击 我似乎会得到相同的合成事件 就像他们按下提交按钮一样 我想忽略作为表单提交 只允许一个人按下 提交 按钮 我删除了一些表单组以减少示例 在所有情况下 按钮或 ENTER 键 e

随机推荐

  • NSOutputStream 刷新

    我正在开发 iPhone 应用程序并想使用 CFStreamCreatePairWithSocketToHost NULL url port serverReadStream serverWriteStream 然后使用 serverWri
  • MySQLNonTransientConnectionException:无法创建与数据库服务器的连接

    我正在处理使用 JDBC 连接到 Amazon RDS 上的 MySQL 数据库的一个奇怪问题 我有两部不同的 Android 手机在同一网络上运行相同的代码 一个连接没有任何问题 另一个给了我以下例外 com mysql jdbc exc
  • C# / Java | AES256加密/解密

    我想加密通过 Java C 套接字 Java 服务器 C 客户端 发送的所有数据 我想使用 AES256 但我无法让 Java 和 C 生成相同的加密代码 任何人都可以给我两个示例 1 个 Java 示例和 1 个 C 示例 它们会生成相同
  • 如何使用 PHP 使用 google API 获取用户“contactid”

    我正在尝试使用 google API 3 0 获取用户联系人以及所有用户详细信息 我能够获得包含用户详细信息的 JSON 响应 url https www google com m8 feeds contacts default full
  • 使用 JavaScript 从数组中删除对象

    如何从数组中删除对象 我希望删除包含名称的对象Kristian from someArray 例如 someArray name Kristian lines 2 5 10 name John lines 1 19 26 96 我想实现 s
  • 切换内部片段

    我用 NavigationView 创建了一个 Activity 用切换按钮打开 public class MainActivity extends AppCompatActivity implements NavigationView O
  • ImportError: libcublas.so.9.0: 无法打开共享对象文件: 在 Ubuntu 16.04.03 上安装张量流时没有这样的文件或目录

    我正在尝试安装带有 cuda 和 gpu 支持的tensorflow 当我尝试导入它时 出现以下错误 Traceback most recent call last File
  • 更改默认短信应用意图在 Android 10 上不起作用

    您好 我正在努力将我的应用程序兼容性更新为 android 10 和 11 之前我将我的应用程序设置为默认短信应用程序并从我的应用程序接收和发送新短信 更改默认短信应用程序的意图在 android 10 以下工作正常 但它不是显示更改 An
  • java中的最小值不起作用

    我需要帮助 因为我的脑细胞无法发现这个程序出了什么问题 这是代码 import java util public class student public static void main String args Scanner sc ne
  • 正则表达式对非捕获组的帮助

    肯定是重复的 但我找不到它 我正在使用一个组来匹配重复的子字符串 然而 我不希望这群人被抓获 这似乎是一个矛盾 明确地说 假设我想找到跟随全大写子集字符串的 3 个精确副本的任何字符 为了 s hjgABABABfgfBBdqCCCugDD
  • 递归清空多个文件的命令

    我想递归地清除给定目录的许多日志文件的内容 而不删除每个文件 用一个简单的命令就可以实现吗 我知道我能做到 gt logs logfile log一份一份的 但是该文件夹中有很多日志 这并不简单 顺便说一句 我正在使用 macOS Sier
  • super() 在构造函数中意味着什么? [复制]

    这个问题在这里已经有答案了 代码是做什么的 super 在构造函数内部做什么 例如 这是我的类的构造函数 public abstract class Rectangle extends AbstractShape private doubl
  • 在Python中查找函数的参数

    我希望能够询问班级的 init 方法的参数是什么 简单的方法如下 cls init func code co varnames code co argcount 但是 如果类有任何装饰器 那么这将不起作用 它将给出装饰器返回的函数的参数列表
  • 检查 xslt 中的条件

    下面是输入 XML 小大 对于较大的输入 XML 以及输出 xml 表示抱歉
  • 访问 Ansible playbook 中的清单主机变量

    在 Ansible 2 1 中 我有一个角色被需要访问主机文件变量的剧本调用 关于如何访问它有什么想法吗 我正在尝试访问ansible ssh host in the test1以下清单的部分host file test1 test 1 a
  • 全栈 NestJS 应用程序中的 OAuth2 流程

    另一个 OAuth2 问题在其他地方没有完全涵盖 我使用 NestJS 后端 React 前端 Passport 和我自己的数据库进行身份验证 尝试添加一个 OAuth2 身份提供商 Google 我将 NestJS 应用程序配置为 OAu
  • Grails:更改 hibernate 方言时 SQL 语法错误

    我正在将 Grails 与 mySQL 数据库一起使用 并且尝试更改数据库引擎 据我研究 这可以最好地做到 dialect org hibernate dialect MyDialect 在 DataSource groovy 配置中 但是
  • 在 Regex/Javascript 中将一个字符交换为另一个字符

    我想做类似的事情 var a This is an A B pattern ABABA a replace A B a replace B A 并让它返回 gt 这是 B A 模式 BABAB 代替 gt 这是一个 A A 模式 AAAAA
  • ElasticSearch:我们可以在索引期间同时应用 n-gram 和语言分析器吗

    非常感谢 Random 我已将映射修改如下 为了进行测试 我使用 电影 作为索引类型 注意 我还添加了 search analyzer 如果没有这个 我就无法得到正确的结果 但是我对使用 search analyzer 有以下疑问 1 我们
  • Tapestry:字符编码问题

    我有一个 Tapestry 应用程序 它从表单中检索数据 将其写入数据库 然后显示结果 只要不使用特殊字符 一切都可以正常工作 例如 文本 Test 将导致 Test 我猜这个问题与错误的字符编码设置有关 Tapestry java 类 C