diff --git a/encode.go b/encode.go
index fb1fc28..e7fe4f3 100644
--- a/encode.go
+++ b/encode.go
@@ -36,6 +36,7 @@
 	classInfoList []*ClassInfo
 	buffer        []byte
 	refMap        map[unsafe.Pointer]_refElem
+	config        *EncoderConfig
 }
 
 // classIndex find the index of the given java name in encoder class info list.
@@ -49,12 +50,32 @@
 }
 
 // NewEncoder generate an encoder instance
-func NewEncoder() *Encoder {
+func NewEncoder(opts ...EncoderOption) *Encoder {
 	buffer := make([]byte, 64)
+	config := &EncoderConfig{}
+	for _, opt := range opts {
+		opt(config)
+	}
 
 	return &Encoder{
 		buffer: buffer[:0],
 		refMap: make(map[unsafe.Pointer]_refElem, 7),
+		config: config,
+	}
+}
+
+// EncoderConfig config for encoder
+type EncoderConfig struct {
+	JavaNullCompatible bool
+}
+
+// EncoderOption inject configuration into encoder
+type EncoderOption func(*EncoderConfig)
+
+// WithJavaNullCompatible configuring java null compatible for encoder
+func WithJavaNullCompatible() EncoderOption {
+	return func(config *EncoderConfig) {
+		config.JavaNullCompatible = true
 	}
 }
 
@@ -94,7 +115,13 @@
 
 // Encode If @v can not be encoded, the return value is nil. At present only struct may can not be encoded.
 func (e *Encoder) Encode(v interface{}) error {
-	if v == nil {
+	if e.config.JavaNullCompatible {
+		vv := reflect.ValueOf(v)
+		if vv.Kind() == reflect.Ptr && vv.IsNil() {
+			e.buffer = EncNull(e.buffer)
+			return nil
+		}
+	} else if v == nil {
 		e.buffer = EncNull(e.buffer)
 		return nil
 	}
diff --git a/null_test.go b/null_test.go
index 2e0bab8..0881ae1 100644
--- a/null_test.go
+++ b/null_test.go
@@ -34,6 +34,18 @@
 	testDecodeFramework(t, "replyNull", nil)
 }
 
-func TestNulEncode(t *testing.T) {
+func TestNullEncode(t *testing.T) {
 	testJavaDecode(t, "argNull", nil)
 }
+
+func TestNullCompatibleEncode(t *testing.T) {
+	e := NewEncoder(
+		WithJavaNullCompatible(),
+	)
+	var null *int = nil
+	e.Encode(null)
+	if e.Buffer() == nil {
+		t.Fail()
+	}
+	assertEqual([]byte("N"), e.buffer, t)
+}
