java運(yùn)行時(shí)參數(shù)file.encoding和sun.jnu.encoding詳解

問題來源

最近公司引入容器技術(shù)众弓,按照計(jì)劃將應(yīng)用切換至容器平臺(tái)查近,應(yīng)用切換驗(yàn)證過程中發(fā)現(xiàn)一個(gè)奇怪的問題。原來可以正常解析的XML配置文件,切換后出現(xiàn)了中文亂碼問題钩骇,如果是純英文的則可以正常解析,包含中文的要么解析報(bào)錯(cuò),要么解析出來的中文內(nèi)容亂碼倘屹。
因?yàn)閼?yīng)用層面未做任何調(diào)整银亲,所以問題定位還是相對(duì)容易,直接對(duì)比應(yīng)用的啟動(dòng)參數(shù)就發(fā)現(xiàn)了問題纽匙。原來應(yīng)用部署的參數(shù)未指定-Dfile.encoding,而切換容器后統(tǒng)一增加了啟動(dòng)參數(shù)-Dfile.encoding=UTF-8务蝠。而應(yīng)用中XML配置文件使用的是GBK編碼,所以導(dǎo)致了亂碼烛缔,將啟動(dòng)參數(shù)調(diào)整為-Dfile.encoding=GBK馏段,XML配置文件解析恢復(fù)正常。

雖然問題解決了践瓷,但是任然有三個(gè)困惑點(diǎn)沒有解決:

  • 未指定file.encoding的情況下院喜,默認(rèn)編碼是由什么決定的?
  • 指定file.encoding的話晕翠,會(huì)產(chǎn)生什么影響喷舀?
  • 經(jīng)常與file.encoding一起出現(xiàn)的sun.jnu.encoding參數(shù)又是什么?兩者有什么關(guān)系淋肾?

于是決定探索一下-Dfile.encoding元咙。

啟動(dòng)參數(shù)-Dfile.encoding是什么?

file.encoding 直譯:文件編碼巫员。
查找 java 源碼,只有四個(gè)類調(diào)用了 file.encoding 這個(gè)屬性甲棍。


  1. java.nio.Charset.defaultCharset()
/**
     * Returns the default charset of this Java virtual machine.
     *
     * <p> The default charset is determined during virtual-machine startup and
     * typically depends upon the locale and charset of the underlying
     * operating system.
     *
     * @return  A charset object for the default charset
     *
     * @since 1.5
     */
    public static Charset defaultCharset() {
        if (defaultCharset == null) {
            synchronized (Charset.class) {
                String csn = AccessController.doPrivileged(
                    new GetPropertyAction("file.encoding"));
                Charset cs = lookup(csn);
                if (cs != null)
                    defaultCharset = cs;
                else
                    defaultCharset = forName("UTF-8");
            }
        }
        return defaultCharset;
    }

從注釋中可以看到简识,默認(rèn)字符集是在 java 虛擬機(jī)啟動(dòng)時(shí)決定的,依賴于 java 虛擬機(jī)所在的操作系統(tǒng)的區(qū)域以及字符集感猛。
從代碼中可以看出七扰,默認(rèn)字符集就是從 file.encoding 這個(gè)屬性中獲取的。
此處的默認(rèn)字符集會(huì)影響字符串陪白、文件字符流讀寫等的默認(rèn)編碼颈走。

  1. URLEncoder.encode(String) Web環(huán)境中最常遇到的編碼使用。
  2. com.sun.org.apache.xml.internal.serializer.Encoding.getMimeEncodings(String) 影響對(duì)無編碼設(shè)置的xml文件的讀取 咱士。
  3. javax.print.DocFlavor影響打印的編碼立由。

從以上信息可以分析到,file.encoding 會(huì)影響無指定編碼的字符串序厉、讀寫文件锐膜、URL編碼、打印等內(nèi)容弛房。

分析file.encoding 對(duì)字符輸入流的影響

無編碼設(shè)置的字符輸入流方法:java.io.InputStreamReader.InputStreamReader(InputStream in)的源碼如下:

public InputStreamReader(InputStream in) {
        super(in);
        try {
            sd = StreamDecoder.forInputStreamReader(in, this, (String)null); // ## check lock object
        } catch (UnsupportedEncodingException e) {
            // The default encoding should always be available
            throw new Error(e);
        }
    }

接著看StreamDecoder.forInputStreamReader的源碼:

    public static StreamDecoder forInputStreamReader(InputStream var0, Object var1, String var2) throws UnsupportedEncodingException {
        String var3 = var2;
        if (var2 == null) {
            var3 = Charset.defaultCharset().name();
        }

        try {
            if (Charset.isSupported(var3)) {
                return new StreamDecoder(var0, var1, Charset.forName(var3));
            }
        } catch (IllegalCharsetNameException var5) {
        }

        throw new UnsupportedEncodingException(var3);
    }

到這里就發(fā)現(xiàn)道盏,如果沒有設(shè)置編碼參數(shù),即上面源碼中的if (var2 == null),則又回到了開始說的:Charset.defaultCharset()荷逞,獲取到的默認(rèn)編碼也就是file.encoding 指定的編碼媒咳。
那么問題來了,如果啟動(dòng)參數(shù)中沒有指定file.encoding 的值种远,那jvm啟動(dòng)的時(shí)候file.encoding 指定的默認(rèn)值是什么呢涩澡?

分析file.encoding 參數(shù)默認(rèn)值

說明: 由于很多場(chǎng)景file.encodingsun.jnu.encoding總是被一起提及,所以下面一起分析這兩個(gè)參數(shù)院促。以下測(cè)試中筏养,操作系統(tǒng)編碼:GBK,java類文件編碼:UTF-8 常拓。

先看一下未指定啟動(dòng)參數(shù)值的情況下輸出系統(tǒng)參數(shù)file.encodingsun.jnu.encoding的值渐溶。代碼如下:

public class FileEncodeTest {
    public static void main(String[] args) {
        System.out.println("file.encoding : "+System.getProperty("file.encoding"));
        System.out.println("sun.jnu.encoding : "+System.getProperty("sun.jnu.encoding"));
    }
}

執(zhí)行結(jié)果:

$ javac FileEncodeTest.java 
$ java FileEncodeTest
  file.encoding : GBK
  sun.jnu.encoding : GBK

確認(rèn)一下操作系統(tǒng)當(dāng)前的編碼:

$ env | grep LANG=
  LANG=zh_CN.GBK

從結(jié)果來看,file.encodingsun.jnu.encoding的值與操作系統(tǒng)的編碼值一致弄抬。但是并不能說明file.encodingsun.jnu.encoding的默認(rèn)值值由操作系統(tǒng)的編碼決定茎辐。
需要進(jìn)一步驗(yàn)證,將操作系統(tǒng)默認(rèn)編碼調(diào)整為UTF-8:

$ export LANG=zh_CN.UTF-8
$ env|grep LANG=
   LANG=zh_CN.UTF-8

重新運(yùn)行得出測(cè)試結(jié)果:

$ java FileEncodeTest
  file.encoding : UTF-8
  sun.jnu.encoding : UTF-8

調(diào)整操作系統(tǒng)編碼為UTF-8后掂恕,file.encodingsun.jnu.encoding的值也變?yōu)閁TF-8拖陆。
到這里可以得出結(jié)論,file.encodingsun.jnu.encoding的默認(rèn)值由操作系統(tǒng)的當(dāng)前編碼決定懊亡。

分析file.encoding對(duì)讀寫文件內(nèi)容的影響

通過不設(shè)置編碼格式的FileReader讀取一個(gè)UTF-8編碼的文件FileEncodeTest副本.java依啰,打印文件名和文件內(nèi)容〉暝妫【操作系統(tǒng)編碼為:GBK】

import java.io.*;

public class FileEncodeTest {
    public static void main(String[] args) throws Exception {
        System.out.println("file.encoding : "+System.getProperty("file.encoding"));
        System.out.println("sun.jnu.encoding : "+System.getProperty("sun.jnu.encoding"));
        
        // sun.jnu.encoding不會(huì)影響文件名的讀取
        // java -Dfile.encoding=utf-8 -Dsun.jnu.encoding=GBK FileEncodeTest   正常讀取文件
        // java -Dfile.encoding=utf-8 -Dsun.jnu.encoding=UTF-8 FileEncodeTest 正常讀取文件
        File file = new File("D:\\FileEncode\\UTF8\\FileEncodeTest副本.java");
        System.out.println(file.getName());
        // java -Dfile.encoding=utf-8 -Dsun.jnu.encoding=UTF-8 FileEncodeTest         正常創(chuàng)建文件
        // java -Dfile.encoding=utf-8 -Dsun.jnu.encoding=GBK FileEncodeTest           正常創(chuàng)建文件
        // java -Dfile.encoding=utf-8 -Dsun.jnu.encoding=ISO-8859-1 FileEncodeTest    正常創(chuàng)建文件
        File file01 = new File("E:\\xstl\\中文01.txt");
        file01.createNewFile();

        // file.encoding會(huì)影響文件內(nèi)容的讀取
        FileReader fileReader = new FileReader( "D:\\FileEncode\\UTF8\\FileEncodeTest副本.java");
        System.out.println("FileReader Encode : " + fileReader.getEncoding());
        BufferedReader br = new BufferedReader(fileReader);

        String line;
        while((line = br.readLine()) != null) {
            System.out.println(line);
        }

        br.close();
    }
}

在不添加file.encoding啟動(dòng)參數(shù)的情況下速警,文件名正常,文件內(nèi)容亂碼鸯两。

$ javac -encoding utf-8 FileEncodeTest.java

$ java FileEncodeTest
  file.encoding : GBK
  sun.jnu.encoding : GBK
  FileEncodeTest副本.java
  FileReader Encode : GBK
public class FileEncodeTest鍓湰 {
    public static void main(String[] args) throws Exception {
        System.out.println("file.encoding : "+System.getProperty("file.encoding"));
        System.out.println("sun.jnu.encoding : "+System.getProperty("sun.jnu.encoding"));
    
        System.out.println("FileEncodeTest鍓湰 ");

    }
}

調(diào)整運(yùn)行時(shí)參數(shù)闷旧,增加-Dfile.encoding=UTF-8后執(zhí)行,不再亂碼钧唐。

    $ java -Dfile.encoding=UTF-8 FileEncodeTest
      file.encoding : UTF-8
      sun.jnu.encoding : GBK
      FileEncodeTest副本.java
      FileReader Encode : UTF8
public class FileEncodeTest副本 {
    public static void main(String[] args) throws Exception {
        System.out.println("file.encoding : "+System.getProperty("file.encoding"));
        System.out.println("sun.jnu.encoding : "+System.getProperty("sun.jnu.encoding"));

        System.out.println("FileEncodeTest副本 ");

    }
}

根據(jù)上面的驗(yàn)證忙灼,可以得出結(jié)論,'file.encoding'參數(shù)設(shè)置的編碼會(huì)影響讀取文件的內(nèi)容钝侠,'sun.jnu.encoding'參數(shù)設(shè)置不會(huì)影響讀取文件的文件名该园。

那是否有可能在讀取文件內(nèi)容之前先設(shè)置一下'file.encoding'的值,然后再讀取文件內(nèi)容帅韧,就可以了呢爬范?

JVM啟動(dòng)后再System.setProperty("file.encoding")是否有效果?

稍微調(diào)整一下代碼弱匪,在讀取文件內(nèi)容之前青瀑,先將'file.encoding'的值設(shè)為UTF-8璧亮,設(shè)置系統(tǒng)屬性值的代碼:System.setProperty("file.encoding", "UTF-8")

import java.io.*;

public class FileEncodeTest {
    public static void main(String[] args) throws Exception {
        System.out.println("file.encoding : "+System.getProperty("file.encoding"));
        System.out.println("sun.jnu.encoding : "+System.getProperty("sun.jnu.encoding"));

        System.setProperty("file.encoding", "UTF-8");
        System.out.println("file.encoding : "+System.getProperty("file.encoding"));

        FileReader fileReader = new FileReader( "D:\\FileEncode\\UTF8\\FileEncodeTest副本.java");
        System.out.println("FileReader Encode : " + fileReader.getEncoding());
        BufferedReader br = new BufferedReader(fileReader);

        String line;
        while((line = br.readLine()) != null) {
            System.out.println(line);
        }

        br.close();
    }
}

根據(jù)輸出結(jié)果可以看出斥难,雖然系統(tǒng)值改變了枝嘶,System.getProperty("file.encoding")的值變?yōu)榱?code>UTF-8,但是并沒有改變默認(rèn)字符集的值哑诊,FileReader的編碼依然是GBK群扶。

    $ java FileEncodeTest
      file.encoding : GBK
      sun.jnu.encoding : GBK
      file.encoding : UTF-8
      FileEncodeTest副本.java
      FileReader Encode :GBK
public class FileEncodeTest鍓湰 {
    public static void main(String[] args) throws Exception {
        System.out.println("file.encoding : "+System.getProperty("file.encoding"));
        System.out.println("sun.jnu.encoding : "+System.getProperty("sun.jnu.encoding"));
    
        System.out.println("FileEncodeTest鍓湰 ");

    }
}

因此可以得出結(jié)論,JVM啟動(dòng)后設(shè)置系統(tǒng)配置值System.setProperty("file.encoding", "UTF-8")不會(huì)影響到默認(rèn)字符集的編碼镀裤。如果需要指定讀取文件內(nèi)容的編碼竞阐,需要通過字符流的構(gòu)造器InputStreamReader(InputStream in, Charset cs)設(shè)置。

對(duì)類編譯暑劝、加載的影響(內(nèi)容和文件名)

既然file.encoding的值會(huì)影響文件內(nèi)容讀取的編碼骆莹,而類加載的過程也需要讀取class文件的內(nèi)容,那file.encoding是否會(huì)影響類加載過程呢担猛?我們先試一下幕垦。下面是測(cè)試代碼【FileEncodeTest.java文件是UTF-8編碼】:

public class FileEncodeTest {
    public static void main(String[] args) {
        System.out.println("file.encoding : "+System.getProperty("file.encoding"));
        System.out.println("sun.jnu.encoding : "+System.getProperty("sun.jnu.encoding"));
        System.out.println("中文");
    }
}

不帶-encoding utf-8,編譯執(zhí)行傅联,運(yùn)行結(jié)果:

$ javac FileEncodeTest.java

$ java FileEncodeTest
  file.encoding : GBK
  sun.jnu.encoding : GBK
  涓枃

從結(jié)果來看先改,java類文件是UTF-8編碼,file.encodingGBK蒸走,從而導(dǎo)致了亂碼仇奶,似乎印證了file.encoding會(huì)影響class文件的加載。
然而事實(shí)并非如此比驻,即使加上參數(shù)'-Dfile.encoding=utf-8'该溯,執(zhí)行結(jié)果依然會(huì)亂碼。

$ java -Dfile.encoding=utf-8 Test02
  file.encoding : utf-8
  sun.jnu.encoding : GBK
  涓枃

細(xì)心的讀者可能會(huì)注意到嫁艇,前面編譯代碼的時(shí)候都增加了參數(shù)-encoding utf-8,事實(shí)上此處會(huì)亂碼并不是加載的時(shí)候引起的弦撩,而是編譯時(shí)引起的步咪。
調(diào)整編譯參數(shù),增加-encoding utf-8益楼,重新測(cè)試猾漫。

    $ javac -encoding utf-8 FileEncodeTest.java

    $ java FileEncodeTest
    file.encoding : GBK
    sun.jnu.encoding : GBK
    中文

編譯恢復(fù)正常。
在類編譯過程中需要指定編譯代碼的編碼感凤,也就是java類文件的編碼悯周。編譯后形成的class文件被統(tǒng)一編碼為UNICODE格式,類加載過程中自然也是使用UNICODE編碼陪竿,file.encoding影響的是未指定字符編碼時(shí)的默認(rèn)字符集禽翼。

接下來進(jìn)一步驗(yàn)證,先調(diào)整測(cè)試代碼:

public class FileEncodeTest {
    public static void main(String[] args) throws Exception {
        System.out.println("file.encoding : "+System.getProperty("file.encoding"));
        System.out.println("sun.jnu.encoding : "+System.getProperty("sun.jnu.encoding"));

        String test = "中文";
        System.out.println(new String(test.getBytes(), "UTF-8"));
    }
}

運(yùn)行結(jié)果:

    $ javac -encoding utf-8 FileEncodeTest.java

    $ java FileEncodeTest
    file.encoding : GBK
    sun.jnu.encoding : GBK
    ????

因?yàn)槟J(rèn)的字符編碼集是GBKnew String(test.getBytes(), "UTF-8")這段代碼闰挡,實(shí)際上是new String(test.getBytes("GBK"), "UTF-8")锐墙。

調(diào)整執(zhí)行參數(shù),增加-Dfile.encoding=utf-8长酗,重新運(yùn)行溪北,中文正常輸出:

$ javac -encoding utf-8 FileEncodeTest.java

$ java -Dfile.encoding=utf-8 FileEncodeTest
  file.encoding : utf-8
  sun.jnu.encoding : GBK
  中文

或者將new String(test.getBytes(), "UTF-8"),調(diào)整為new String(test.getBytes(), "GBK")夺脾,亂碼問題也可以解決之拨,其實(shí)好的實(shí)踐應(yīng)該是:new String(test.getBytes("UTF-8"), "UTF-8")

以上可以得出結(jié)論咧叭,編譯期間的字符編碼由javac -encoding utf-8決定蚀乔,運(yùn)行期間的默認(rèn)字符編碼由file.encoding決定,而class文件和JVM的字符編碼統(tǒng)一使用UNICODE編碼佳簸。

那說半天乙墙,sun.jnu.encoding一點(diǎn)存在感都沒有,那sun.jnu.encoding究竟起什么作用呢生均?

中文類名听想?

研究到這里,file.encoding參數(shù)的作用已經(jīng)比較清楚了马胧,那sun.jnu.encoding又有什么作用呢汉买?我們先試著運(yùn)行如下測(cè)試代碼:

public class FileEncodeTest副本 {
    public static void main(String[] args) throws Exception {
        System.out.println("file.encoding : "+System.getProperty("file.encoding"));
        System.out.println("sun.jnu.encoding : "+System.getProperty("sun.jnu.encoding"));
    }
}

運(yùn)行結(jié)果,一切正常:

$ javac -encoding utf-8 FileEncodeTest副本.java

$ java FileEncodeTest副本
  file.encoding : GBK
  sun.jnu.encoding : GBK

調(diào)整一下運(yùn)行參數(shù)佩脊,增加'-Dsun.jnu.encoding=utf-8'蛙粘,提示“錯(cuò)誤: 找不到或無法加載主類 FileEncodeTest????”

 $ java -Dsun.jnu.encoding=utf-8 FileEncodeTest副本
  錯(cuò)誤: 找不到或無法加載主類 FileEncodeTest????

這是因?yàn)闇y(cè)試場(chǎng)景的操作系統(tǒng)編碼是GBK威彰,當(dāng)sun.jnu.encoding未配置使用和操作系統(tǒng)一致編碼(GBK)出牧,編碼統(tǒng)一不會(huì)引起亂碼。而手動(dòng)設(shè)置sun.jnu.encodingutf-8編碼時(shí)歇盼,與操作系統(tǒng)的GBK編碼不一致舔痕,因而無法加載指定的類。
這說明-Dsun.jnu.encoding的編碼會(huì)影響類加載時(shí)定位中文類豹缀。

另外伯复,我們來看一下下面這個(gè)測(cè)試代碼:

public class FileEncodeTest {
    public static void main(String[] args) throws Exception {
        System.out.println("file.encoding : "+System.getProperty("file.encoding"));
        System.out.println("sun.jnu.encoding : "+System.getProperty("sun.jnu.encoding"));

        System.out.println("args0 : " + args[0]);
        System.out.println(System.getProperties().getProperty("test"));

    }
}

運(yùn)行結(jié)果如下:

$ javac -encoding utf-8 FileEncodeTest.java
$ java -Dsun.jnu.encoding=GBK -Dtest=中文 FileEncodeTest 中文
  file.encoding : GBK
  sun.jnu.encoding : GBK
  args0 : 中文
  中文

重新調(diào)整運(yùn)行參數(shù),將sun.jnu.encoding的值從GBK改為UTF-8邢笙,再執(zhí)行結(jié)果如下:

$ javac -encoding utf-8 FileEncodeTest.java

$ java -Dsun.jnu.encoding=UTF-8 -Dtest=中文 FileEncodeTest 中文
  file.encoding : GBK
  sun.jnu.encoding : UTF-8
  args0 : ????
  中文

從上面的測(cè)試結(jié)果可以看出啸如,'-Dsun.jnu.encoding' 除了影響讀取類名,還會(huì)影響傳入?yún)?shù)的編碼氮惯。

總結(jié)

  • file.encoding不主動(dòng)配置的情況下叮雳,默認(rèn)是操作系統(tǒng)的編碼想暗;
  • file.encoding在JVM啟動(dòng)后再修改其值,只會(huì)修改配置項(xiàng)值债鸡,不會(huì)改變默認(rèn)字符集編碼江滨;
  • 運(yùn)行時(shí)配置file.encoding,影響java默認(rèn)字符集編碼:
  1. Charset.defaultCharset() Java環(huán)境中非常關(guān)鍵的編碼設(shè)置
  2. URLEncoder.encode(String) Web環(huán)境中最常遇到的編碼使用
  3. com.sun.org.apache.xml.internal.serializer.Encoding 影響對(duì)無編碼設(shè)置的xml文件的讀取
  4. javax.print.DocFlavor 影響打印的編碼
  • sun.jnu.encoding 影響類加載時(shí)類名的編碼

文件操作涉及到字節(jié)操作和字符操作厌均,在字符操作的時(shí)候應(yīng)該明確指定操作的編碼唬滑,而不是依賴默認(rèn)配置,從而避免很多的不確定性棺弊,降低外部依賴(耦合)晶密。

注意:Eclipse或IDEA在編譯或運(yùn)行時(shí),會(huì)默認(rèn)增加編譯模她、運(yùn)行時(shí)參數(shù)稻艰,會(huì)影響代碼效果,建議在命令行驗(yàn)證如上測(cè)試代碼侈净。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末尊勿,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子畜侦,更是在濱河造成了極大的恐慌元扔,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,464評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件旋膳,死亡現(xiàn)場(chǎng)離奇詭異澎语,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)验懊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門擅羞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人义图,你說我怎么就攤上這事减俏。” “怎么了碱工?”我有些...
    開封第一講書人閱讀 169,078評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵娃承,是天一觀的道長。 經(jīng)常有香客問我痛垛,道長草慧,這世上最難降的妖魔是什么桶蛔? 我笑而不...
    開封第一講書人閱讀 59,979評(píng)論 1 299
  • 正文 為了忘掉前任匙头,我火速辦了婚禮,結(jié)果婚禮上仔雷,老公的妹妹穿的比我還像新娘蹂析。我一直安慰自己舔示,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,001評(píng)論 6 398
  • 文/花漫 我一把揭開白布电抚。 她就那樣靜靜地躺著惕稻,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蝙叛。 梳的紋絲不亂的頭發(fā)上俺祠,一...
    開封第一講書人閱讀 52,584評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音借帘,去河邊找鬼蜘渣。 笑死,一個(gè)胖子當(dāng)著我的面吹牛肺然,可吹牛的內(nèi)容都是我干的蔫缸。 我是一名探鬼主播,決...
    沈念sama閱讀 41,085評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼际起,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼拾碌!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起街望,我...
    開封第一講書人閱讀 40,023評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤校翔,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后它匕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體展融,經(jīng)...
    沈念sama閱讀 46,555評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,626評(píng)論 3 342
  • 正文 我和宋清朗相戀三年豫柬,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了告希。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,769評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡烧给,死狀恐怖燕偶,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情础嫡,我是刑警寧澤指么,帶...
    沈念sama閱讀 36,439評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站榴鼎,受9級(jí)特大地震影響伯诬,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜巫财,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,115評(píng)論 3 335
  • 文/蒙蒙 一盗似、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧平项,春花似錦赫舒、人聲如沸悍及。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,601評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽心赶。三九已至,卻和暖如春缺猛,著一層夾襖步出監(jiān)牢的瞬間缨叫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,702評(píng)論 1 274
  • 我被黑心中介騙來泰國打工荔燎, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留弯汰,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,191評(píng)論 3 378
  • 正文 我出身青樓湖雹,卻偏偏與公主長得像咏闪,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子摔吏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,781評(píng)論 2 361