مشكلة ترميز أحرف Servlet مع JPA
-
26-12-2019 - |
سؤال
حسنًا، لقد قضيت ثلاثة سبع ساعات من البحث والاختبار على Google واستسلمت، ولا بد لي من طلب المساعدة. كنت أقوم بالتطوير في Linux وكان كل شيء سهلاً، والآن أستخدم Windows والأشياء السهلة مثل تحديد اللغة الصحيحة لا تعمل.
لقد قمت بإنشاء JSP بسيط باستخدام النموذج:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<form action="save-user" method="post">
Name: <input type="text" name="name"><br>
Email: <input type="text" name="email"><br>
<input type="submit" value="Save">
</form>
و السيرفلت:
String name = request.getParameter("name");
String email = request.getParameter("email");
أتلقى Leoš بدلاً من Leoš.أستخدم WildFly 8.0RC1، Windows 8 التشيكي، فايرفوكس.
ما حاولت بالفعل:
- request.setCharacterEncoding("UTF-8");قبل قراءة المعلمة الأولى
- قم بالتصفية باستخدام request.setCharacterEncoding("UTF-8");
- خاصية JVM -Dfile.encoding=UTF-8
- قم بإزالة برطمانات JEE القياسية من الحرب
- إصلاح التعبئة والتغليف الحرب
- تقسيم المشروع إلى وحدة WEB وEJB
عندما يتم نشر كيان JPA / DAO، يتم تشويه علامات التشكيل.إذا قمت بتعليق كيان من servlet وقمت بإزالة كيان JPA من الحرب (حاليًا قم بإزالة OAuthLoginEJB.jar من WEB-INF/lib)، فسأتلقى التشفير الصحيح.إذا قمت بإضافة EJB هذا مرة أخرى فإنه يفشل مرة أخرى.هل هو خطأ JBoss/WildFly؟
يمكنني تقديم مصادر كاملة: https://drive.google.com/file/d/0B-adlc5KThQDWTdYOEwxOUpTVEU/edit?usp=sharingإنه جاهز للتشغيل، ولا تحتاج حتى إلى كتابة أحرف تشيكية، حيث يتم تعبئتها مسبقًا.شكرًا لك
المحلول
ماركو من القائمة البرية في القائمة البريدية تديرني إلى هذا العيب: rel="nofollow"> https://issues.jboss.ORG / استعراض / CDI-411 وهذه الحل البديل: http://weld.cdi-pec.org/Documentation/#3
عندما قمت بتعديل Web.xml الخاص بي، بدأ العمل:
giveacodicetagpre.نصائح أخرى
تحتاج إلى الاتصال request.setCharacterEncoding("UTF-8")
قبل القراءة لأول مرة من طلب InputStream.يمكن قراءة المعلمات بواسطة عامل التصفية قبل تعيين التشفير في servlet الخاص بك.ربما يكون هناك بعض المرشحات OAuthLoginEJB.jar
أو في تبعيات أخرى، الذي يقرأ المعلمات أولا؟عادةً ما تكون هذه بعض المعلمات لتصحيح الأخطاء ...باستخدام Servlet API 3.0، يمكن تسجيل السيرفلتس والمرشحات من خلال التعليقات التوضيحية، لذلك يمكن تسجيل بعض المرشحات على الرغم من أنها فارغة web.xml
.