Browse Source

jfinal 4.4

James 6 years ago
parent
commit
2e9c8fc0f2

+ 12 - 4
src/main/java/com/jfinal/template/Engine.java

@@ -478,16 +478,24 @@ public class Engine {
 	}
 	
 	/**
-	 * Enjoy 模板引擎对 UTF-8 的 encoding 做过性能优化,某些偏门字符在
-	 * 被编码为 UTF-8 时会出现异常,此时可以通过继承扩展 EncoderFactory
-	 * 来解决编码异常,具体用法参考:
-	 *     http://www.jfinal.com/feedback/5340
+	 * Enjoy 模板引擎对 UTF-8 的 encoding 做过性能优化,某些罕见字符
+	 * 无法被编码,可以配置为 JdkEncoderFactory 解决问题:
+	 * 		engine.setEncoderFactory(new JdkEncoderFactory());
 	 */
 	public Engine setEncoderFactory(EncoderFactory encoderFactory) {
 		config.setEncoderFactory(encoderFactory);
 		return this;
 	}
 	
+	/**
+	 * 配置为 JdkEncoderFactory,支持 utf8mb4,支持 emoji 表情字符,
+	 * 支持各种罕见字符编码
+	 */
+	public Engine setToJdkEncoderFactory() {
+		config.setEncoderFactory(new com.jfinal.template.io.JdkEncoderFactory());
+		return this;
+	}
+	
 	public Engine setWriterBufferSize(int bufferSize) {
 		config.setWriterBufferSize(bufferSize);
 		return this;

+ 38 - 0
src/main/java/com/jfinal/template/io/JdkEncoderFactory.java

@@ -0,0 +1,38 @@
+/**
+ * Copyright (c) 2011-2019, James Zhan 詹波 (jfinal@126.com).
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.jfinal.template.io;
+
+/**
+ * JdkEncoderFactory
+ * 
+ * 支持 utf8mb4,支持 emoji 表情字符,支持各种罕见字符编码
+ * 
+ * <pre>
+ * 配置方法:
+ * engine.setToJdkEncoderFactory();
+ * </pre>
+ */
+public class JdkEncoderFactory extends EncoderFactory {
+	
+	@Override
+	public Encoder getEncoder() {
+		return new JdkEncoder(charset);
+	}
+}
+
+
+