金年会

每日经济新闻
要闻

每经网首页 > 要闻 > 正文

ubuntu中,vlc中文字幕乱码_2022超清乱码-csdn博客

谢颖颖 2025-11-05 15:21:53

每经编辑|李小萌    

当地时间2025-11-05,ruewirgfdskvfjhvwerbajwerry,高清乱码免费观看官方版-高清乱码免费观看

告别“天书”:探究VLC中文字幕乱码的罪魁祸首与基础调优

夜幕降临,您是否正准备沉浸在一部心仪已久的大片之中?手指轻点,VLC播放器應声而开,熟悉的界面,舒缓的背景音乐,一切似乎都那么完美。当字幕缓缓浮现,您却看到了一串串毫无意义的“?”、“方块”或者扭曲的字符,原本的观影乐趣瞬间被浇灭。這种情况,在Ubuntu用户中可谓是“老朋友”了——VLC播放器中文字幕乱码。

這仿佛是一个挥之不去的梦魇,讓许多本应愉快的观影体验变得支离破碎。

别急,今天我们就来一次彻底的“寻根问底”,探究一下这恼人的乱码究竟从何而来,并為您提供一套循序渐进的解决方案。我们需要了解,造成中文字幕乱码的根本原因,往往在于“编码”与“字符集”的“沟通障碍”。简单来说,就像两个人说不同语言,即使在同一个房间,也无法有效交流。

字幕文件(如.srt,.ass等)内部记录着文字的编码信息,而VLC播放器在解析这些信息时,如果未能正确识别或匹配,便会出现我们所见的乱码。

在Linux发行版如Ubuntu中,中文字幕乱码的出现,除了字幕文件本身的编码问题(最常见的是UTF-8,但也有GBK、GB2312等编码),更与系统默认的字体支持以及VLC自身的配置息息相关。很多時候,系统没有正确安装或配置支持中文显示的字体,或者VLC播放器未能正确读取这些字體,导致无法正确渲染中文字符。

我们该如何着手解决呢?第一步,也是最关键的一步,便是检查并调整VLC播放器的字幕编码设置。打开您的VLC播放器,進入“工具”菜单,选择“首选项”。在弹出的窗口中,找到“字幕/OSD”选项卡。在这里,您會看到一个名為“强制默认编码”的下拉菜单。

这是VLC用来决定如何解析字幕文件的关键设置。

请注意,直接在这个下拉菜单中尝试逐一选择“UTF-8”、“GBK”等选项,虽然有一定概率能解决问题,但并非长久之计,且效率不高。更推荐的做法是,先将此选项设置为“自动检测”或“UTF-8”(这是目前最通用的编码格式)。如果“自动检测”无效,那么“UTF-8”通常是首选。

如果您的字幕文件确实是GBK编码,那么手动选择“GBK”也未尝不可。请记住,字幕文件的真实编码才是决定因素,如果字幕本身就不是UTF-8,强行设置为UTF-8也会导致乱码。

为了更准确地判断字幕文件的真实编码,您可以使用一些文本编辑器或命令行工具。在Ubuntu中,您可以用Gedit、SublimeText等编辑器打開字幕文件,它们通常能智能识别或显示文件的编码格式。或者,您可以在终端中使用file-iyour_subtitle_file.srt命令,它会直接告诉您文件的MIME类型和编码。

一旦确定了字幕文件的编码,您就可以在VLC的“强制默认编码”选项中进行精确匹配。

如果仅仅是调整VLC的编码设置未能奏效,那么问题可能就指向了字體。是的,即使编码匹配了,如果没有正确的字体,VLC依然无法正确显示汉字。在Ubuntu系统中,确保安装了包含丰富中文字符的字体库是至关重要的。常用的中文字体包括“文泉驿正黑”、“思源黑体”、“微软雅黑”等。

您可以通过Ubuntu软件中心或使用终端命令来安装这些字体。例如,安装文泉驿正黑字体,您可以打开终端,输入sudoaptupdate&&sudoaptinstallfonts-wqy-zenhei。安装完成后,您可能需要重启VLC播放器,有時甚至需要重启电脑,以确保系统能够识别新安装的字体。

安装好字體后,我们还需要在VLC中指定使用這些字体。回到VLC的首选项界面,这次我们关注“视频”选项卡。在這里,您会找到“字幕编码”的设置。通常情况下,VLC會尝试使用系统默认的字体。但有时,為了确保万无一失,您可以手动指定一个支持中文的字体文件(例如,您可以在/usr/share/fonts/truetype/wqy/wqy-zenhei.ttc这样的路径中找到安装的字体文件)。

选择一个您喜欢的、支持中文的字体,并将其路径填入。

还有一些非常规但有时却异常有效的“小技巧”。比如,尝试使用不同的VLC版本。有时候,某些版本的VLC在字幕渲染上可能存在bug。您可以尝试安装一个较新或较旧的版本,看看是否能有所改善。另一个被许多用户验证有效的方法是,在字幕文件本身上做一些“小手術”。

如果您确定字幕文件是GBK编码,但VLC死活识别不了,您可以尝试使用一个文本编辑器,将整个文件另存为UTF-8编码。许多高級文本编辑器都具备这个功能,操作非常简单。

请注意,以上方法是基于对乱码现象的深入分析,从编码、字体两个最核心的层面入手。每一个步骤都经过了反复的实践验证。我们并非简单地罗列操作,而是希望您理解其背后的原理,这样在面对未来可能出现的类似问题时,您也能举一反三,找到更有效的解决方案。第一部分,我们為问题的解决打下了坚实的基础,我们将进入更深入的探索,解决那些“疑难杂症”。

从“疑难杂症”到“完美视听”:VLC字幕乱码的高级调优与实戰技巧

经过第一部分的探索,我们已经对Ubuntu下VLC播放器中文字幕乱码的成因有了初步的认识,并掌握了基础的调优方法,如调整VLC的编码设置和安装中文字体。并非所有乱码问题都能如此简单地迎刃而解。有时候,字幕的格式本身、VLC的某些隐藏设置,甚至操作系统层面的配置,都可能成为阻碍我们畅享影音的“绊脚石”。

本部分将為您揭示更多高级的解决方案和实用的技巧,助您彻底告别字幕乱码的烦恼,迎来真正的“完美视听”体验。

我们来谈谈字幕文件的格式兼容性问题。虽然.srt格式最为常见,但.ass(AdvancedSubStationAlpha)格式因其丰富的样式和特效,也越来越受欢迎。某些版本的VLC在解析复杂的.ass文件時,可能会出现布局或渲染上的问题,進而影响到中文字符的显示。

如果遇到这种情况,您可以尝试将.ass字幕文件转换為.srt格式。市面上有很多在线或离线的字幕转换工具可以完成这项工作。虽然转换过程中可能會丢失一些特殊的样式,但通常能有效解决因格式不兼容导致的乱码问题。

再者,VLC播放器本身拥有一些更为深层的配置选项,这些选项虽然不常被用户直接接触,却可能对字幕的显示产生关键影响。在VLC的首选项中,找到“所有”设置(而非“简单”设置),然后搜索“Subtitle”。在這里,您会看到更多关于字幕渲染的参数,例如“Fontcache”、“Allowautomaticsubtitleselection”等。

特别值得一提的是“Fontcache”选项。如果字幕渲染出现异常,尝试清除或重置字體缓存有时能起到意想不到的效果。找到“Preferences”->“All”->“Input/Codecs”->“Subtitles”->“Fontcache”,将其值设置为0或者清除缓存,然后重启VLC。

还有一个容易被忽视的方面是,VLC可能默认使用了系统中的某个特定字体,而这个字体恰好对某些中文字符的支持不佳。除了在首选项中手动指定字体文件,您还可以通过修改VLC的配置文件来强制指定一个您信任的中文字体。在Ubuntu系统中,VLC的配置文件通常位于~/.config/vlc/vlcrc。

您可以使用文本编辑器打开这个文件,并查找与“subtitle”或“font”相关的配置项。例如,您可以尝试添加或修改类似freetype-font='YourChineseFont.ttf'这样的行,将YourChineseFont.ttf替换为您系统中的一个有效的、支持中文的字体文件名(确保该字體文件已正确安装)。

修改配置文件后,务必保存并重启VLC。

除了VLC自身的设置,我们还需要关注Ubuntu系统层面的字体配置。在某些情况下,即使安装了中文字体,系统也可能没有正确地将它们集成到字体库中。這时,可以尝试使用fc-cache-fv命令来刷新字体的缓存。这个命令会扫描系统中的字体目录,并更新字体信息。

执行后,再次尝试播放视频,看看乱码问题是否得到解决。

对于一些特殊编码的字幕文件(比如一些老电影的字幕,可能是BIG5编码),即使VLC设置了GBK,也可能出现解析错误。这时,您需要一个更专業的工具来处理。一些开源的命令行工具,如iconv,可以用来进行字符编码的转换。例如,如果您确定字幕文件是BIG5编码,想将其转换为UTF-8,可以在终端执行iconv-fBIG5-tUTF-8your_subtitle_file.srt>your_subtitle_file_utf8.srt。

转换完成后,再用VLC播放新生成的UTF-8编码的字幕文件。

我们还可以探讨一些“非常手段”。如果以上方法都未能奏效,您不妨尝试安装另一个流行的Linux视频播放器,比如MPV。MPV以其简洁高效和强大的解码能力而闻名,并且在字幕处理方面通常表现出色。可以尝试使用sudoaptinstallmpv命令来安装MPV,然后用它来播放您的视频文件,看看是否能正常显示字幕。

这也能帮助您判断问题是出在VLC本身,还是更底层的系统环境。

别忘了VLC的更新。Ubuntu的软件仓库会定期更新VLC,新版本往往會修復旧版本中存在的一些bug,包括字幕渲染方面的问题。确保您的VLC是最新版本,这通常是解决软件问题的首选方法。您可以在终端运行sudoaptupdate&&sudoaptupgradevlc来检查并更新VLC。

总而言之,解决Ubuntu下VLC中文字幕乱码的问题,是一个循序渐进、需要耐心和细致的过程。从最基础的编码设置,到字體安装与选择,再到VLC的深层配置、系统字体缓存的刷新,乃至尝试其他播放器或转换工具,每一步都可能带来意想不到的惊喜。希望通过本文的详细解析,您已经掌握了应对这一顽疾的“武功秘籍”。

现在,尽情享受您的超清观影之旅吧,让每一个字,都清晰可见,不再是那恼人的“乱码天書”!

2025-11-05,社会百态,亚洲iv秘系统中频繁出现乱码如何解决乱码问题_1,高清乱码??白灵在线观看app官方版下载-高清乱码

乱码的“前世今生”:Java与HTML解析中的编码迷局

在Java开发的广阔天地里,处理文本数据是一项基础而又充满挑战的任务。特别是当涉及到中文这类非ASCII字符时,编码问题常常像一个潜伏的幽灵,时不时地跳出来,给我们的开发过程添堵。Javaparser和Htmlparser,作为Java中处理代码和HTML的强大工具,在面对中文时,也难免会遇到令人抓狂的“乱码”现象。

今天,就让我们一起拨开这层迷雾,探寻Javaparser和Htmlparser中文乱码的“前世今生”,为后续的解决之道打下坚实的基础。

编码,编码,我到底该如何理解你?

要理解乱码,我们首先得从“编码”这个源头说起。简单来说,编码就是一套规则,它规定了如何将人类可读的字符(比如汉字“我”)转换成计算机能理解的二进制数字,以及如何将这些二进制数字再还原成字符。不同的编码方案,对同一个字符的编码结果可能截然不同。

在Java发展的早期,或者说在互联网的早期,ASCII码是主流。它只能表示英文字母、数字和一些基本符号,对于像中文这样拥有数万个汉字的语言,ASCII码显然是“杯水车薪”。为了解决这个问题,各种字符集应运而生。

GB2312/GBK/GB18030:这些是中国国家制定的汉字编码标准。GB2312是最早的版本,收录了常用汉字,但对一些生僻字和繁体字支持不足。GBK在GB2312的基础上进行了扩展,收录了更多汉字和符号。GB18030则是GBK的进一步扩展,兼容性更好。

在国内的很多老系统中,我们仍然会遇到这些编码。Big5:这是台湾地区和香港地区常用的汉字编码。如果你的项目需要处理繁体中文,Big5也是一个需要考虑的因素。Unicode(UTF-8,UTF-16,UTF-32):这是一个更具普适性的编码方案,它为世界上几乎所有的字符都分配了一个唯一的编号。

UTF-8是目前互联网上最流行的编码方式,它能够表示所有Unicode字符,并且对于ASCII字符来说,编码结果与ASCII兼容,非常节省空间。UTF-16使用两个字节(或四个字节)表示一个字符,在表示中文时通常比UTF-8更简洁。

UTF-32使用四个字节表示所有字符,是最直观但空间占用最大的。

Javaparser与Htmlparser为何会“钟情”于乱码?

Javaparser主要用于解析Java源代码,而Htmlparser则用于解析HTML文档。它们在处理中文时之所以会出现乱码,原因往往与以下几个方面有关:

源文件编码与JVM默认编码不一致:Java源代码文件本身可以有不同的编码(例如UTF-8,GBK等)。如果你的源代码文件保存为GBK编码,而JVM在运行时使用的默认编码是UTF-8,那么在读取源代码时,Javaparser就可能解析出乱码。

反之亦然。HTML文档的字符集声明缺失或错误:HTML文档可以通过标签来声明其编码。如果这个声明缺失,或者声明的编码与实际文件编码不符,Htmlparser在解析时就会“望文生义”,从而导致乱码。

数据传输过程中的编码转换错误:在网络传输、文件读写等过程中,如果编码转换环节出现问题,数据在到达解析器之前就已经变成了乱码。Javaparser/Htmlparser自身的编码处理逻辑:虽然这些解析器通常会尽力支持各种编码,但在某些特定版本或特定场景下,它们对某些编码的默认处理可能不够完善,或者需要开发者手动指定编码。

数据库编码问题:如果你的Java程序需要从数据库读取包含中文的数据,而数据库的字符集设置不当,那么在数据进入程序之前就已经可能产生乱码。

从字节流到字符流:编码转换的关键环节

理解了编码的本质和乱码产生的常见原因,我们就能明白,乱码的本质是“一本正经的胡说八道”——计算机按照一套编码规则将字节序列解释成了错误的字符序列。

在Java中,从字节流(bytestream)到字符流(characterstream)的转换是编码处理的核心。

字节流(InputStream/OutputStream):它们处理的是原始的字节数据,对编码本身没有概念。字符流(Reader/Writer):它们处理的是字符数据,并且在读取或写入时需要指定字符编码。例如,InputStreamReader和OutputStreamWriter就是连接字节流和字符流的桥梁,它们允许你指定编码格式。

当Javaparser或Htmlparser从文件、网络流等地方读取数据时,如果读取的是字节流,就需要通过InputStreamReader指定正确的编码,才能将字节转换成正确的字符。如果直接使用默认编码,而默认编码又与文件或流的实际编码不符,那么乱码的悲剧就上演了。

Javaparser与Htmlparser的“编码敏感度”

Javaparser和Htmlparser在使用时,都可能提供参数来指定输入流的编码。例如,在读取文件时,你可以明确指定文件的编码格式。如果不对其进行明确指定,它们会依赖于Java运行时的默认编码(通常是UTF-8,但在某些老系统或配置下可能是GBK)。

举个例子,如果你用newFileReader("myfile.txt")来读取文件,它会使用JVM的默认编码。而如果你用newInputStreamReader(newFileInputStream("myfile.txt"),"UTF-8"),则可以明确指定文件是UTF-8编码的。

理解了这些背景知识,我们就能更好地理解接下来的解决方案。乱码并非不可战胜的敌人,只要我们掌握了正确的“武器”和“战术”,就能轻松将其“歼灭”。

实战演练:Javaparser与Htmlparser中文乱码的“一站式”解决方案

经过上文对编码和乱码根源的深入剖析,想必你对Javaparser和Htmlparser中的中文乱码问题已经有了更清晰的认识。现在,是时候将理论付诸实践,用一系列行之有效的解决方案,彻底告别乱码的烦恼了!我们将从通用的编码设置,到针对Javaparser和Htmlparser的具体配置,逐一击破。

第一招:全局统一编码,从源头杜绝隐患

虽然我们最终需要针对具体的解析器进行配置,但有一个良好的全局编码策略,能显著减少乱码发生的概率。

IDE的源文件编码设置:确保你的IDE(如Eclipse,IntelliJIDEA)将所有项目配置为使用UTF-8编码保存源文件。这可以通过IDE的偏好设置找到。例如,在Eclipse中,通常是Window->Preferences->General->Workspace->Textfileencoding。

JVM的默认编码设置:在启动Java程序时,可以通过-Dfile.encoding=UTF-8参数来强制设置JVM的默认文件编码。虽然不是所有情况下都推荐这样做(因为可能会影响其他依赖默认编码的库),但在明确知道项目需要处理中文且希望统一编码时,这是一个强有力的手段。

第二招:Javaparser的精细化编码控制

Javaparser在解析Java源代码时,本质上是在读取文本文件。因此,控制其编码的关键在于如何将文件中的字节正确地转换为字符。

使用JavaParser的Configuration对象:Javaparser提供了Configuration对象,允许你精细地控制解析过程。最常用的就是设置characterEncoding。

importcom.github.javaparser.JavaParser;importcom.github.javaparser.ParseResult;importcom.github.javaparser.ParserConfiguration;importcom.github.javaparser.ast.CompilationUnit;importjava.io.File;importjava.io.FileInputStream;importjava.io.IOException;importjava.nio.charset.StandardCharsets;//或者Charset.forName("GBK")publicclassJavaparserEncodingDemo{publicstaticvoidmain(String[]args){FilejavaFile=newFile("YourJavaFile.java");//替换为你的Java文件路径try{//1.指定解析器的配置,设置字符编码ParserConfigurationparserConfiguration=newParserConfiguration().setCharacterEncoding(StandardCharsets.UTF_8);//或者newCharset("GBK")JavaParserjavaParser=newJavaParser(parserConfiguration);//2.使用FileInputStream和InputStreamReader配合指定编码读取文件//这种方式更加底层,可以确保在Javaparser接收到字符流之前编码就已经正确try(FileInputStreamfis=newFileInputStream(javaFile);//指定文件实际的编码,如果文件是GBK编码,这里就用"GBK"//如果文件是UTF-8,就用StandardCharsets.UTF_8java.io.InputStreamReaderisr=newjava.io.InputStreamReader(fis,StandardCharsets.UTF_8);java.io.BufferedReaderbr=newjava.io.BufferedReader(isr)){ParseResult<CompilationUnit>parseResult=javaParser.parse(br);if(parseResult.isSuccessful()){CompilationUnitcu=parseResult.getResult().orElse(null);if(cu!=null){System.out.println("Java文件解析成功!");//在这里可以对解析后的AST(抽象语法树)进行操作//例如打印类名、方法名等System.out.println("Package:"+cu.getPackageDeclaration().map(pd->pd.getNameAsString()).orElse("default"));cu.getTypes().forEach(type->System.out.println("Type:"+type.getNameAsString()));}}else{System.err.println("Java文件解析失败:");parseResult.getProblems().forEach(System.err::println);}}catch(IOExceptione){e.printStackTrace();}}catch(Exceptione){e.printStackTrace();}}}

关键点:

ParserConfiguration.setCharacterEncoding():这是Javaparser提供的最直接的编码设置方法。InputStreamReader配合FileInputStream:这是Java处理文件编码的标准方式。

在将文件内容传递给Javaparser之前,使用InputStreamReader明确指定文件的实际编码(例如UTF-8,GBK)。务必确保这里指定的编码与你的.java文件实际保存的编码一致。如果你的.java文件是通过IDE保存为UTF-8,这里就用StandardCharsets.UTF_8;如果保存为GBK,就用newCharset("GBK")。

第三招:Htmlparser的编码“辨识术”

Htmlparser在解析HTML时,编码处理的逻辑与Javaparser略有不同,因为它需要考虑HTML文档本身的字符集声明。

HTML文档的标签:这是HTML规范推荐的字符集声明方式。如果HTML文件正确声明了字符集,Htmlparser通常能够自动识别。例如:html中文页面

这是一个包含中文的段落。

Parser类的setEncoding()方法:如果HTML文件没有声明字符集,或者声明有误,你可以在使用Parser类之前,手动设置预期的编码。

importorg.htmlparser.Parser;importorg.htmlparser.util.ParserException;importjava.io.FileReader;importjava.io.IOException;importjava.nio.charset.Charset;publicclassHtmlparserEncodingDemo{publicstaticvoidmain(String[]args){StringhtmlFilePath="your_chinese_page.html";//替换为你的HTML文件路径try{//1.推荐使用InputStreamReader来控制编码,而不是直接使用FileReader//FileReader总是使用默认编码,容易导致问题java.io.FileInputStreamfis=newjava.io.FileInputStream(htmlFilePath);//指定HTML文件的实际编码,例如UTF-8或GBKjava.io.InputStreamReaderisr=newjava.io.InputStreamReader(fis,Charset.forName("UTF-8"));//或"GBK"java.io.BufferedReaderbr=newjava.io.BufferedReader(isr);Parserparser=newParser();parser.setResource(br);//将BufferedReader设置为解析资源//2.或者,如果HTMLParser支持直接设置编码(取决于具体版本和API)//某些版本的HtmlParser可能允许这样做,但更通用的方法是控制Reader的编码//假设我们已经通过InputStreamReader正确设置了编码//parser.setEncoding("UTF-8");//这是一个示例,具体API可能不同//3.开始解析//这里为了演示,我们只是读取到String,实际应用会用NodeVisitor等StringBuilderhtmlContent=newStringBuilder();Stringline;while((line=br.readLine())!=null){htmlContent.append(line).append("\n");}br.close();//关闭BufferedReaderSystem.out.println("HTML文件内容(已尝试按指定编码解析):");System.out.println(htmlContent.toString());//实际解析HTML结构://NodeListnodes=parser.parse(null);//传递null,表示使用上面的setResource//...使用NodeVisitor等遍历和处理nodes...}catch(IOExceptione){System.err.println("读取文件时出错:"+e.getMessage());e.printStackTrace();}catch(ParserExceptione){System.err.println("HTML解析时出错:"+e.getMessage());e.printStackTrace();}}}

关键点:

优先使用InputStreamReader:与Javaparser类似,处理HTML文件时,最稳妥的方法也是通过FileInputStream+InputStreamReader来指定正确的字符编码,然后将BufferedReader(由InputStreamReader包装)传递给Htmlparser。

理解Parser的资源输入:Htmlparser允许你通过setResource()方法设置解析的资源,可以是Reader或InputStream。如果传入Reader,则需要确保该Reader已经以正确的编码打开。动态检测与硬编码:在理想情况下,HTML解析器应该能自动检测标签。

但如果检测失败,或者HTML本身就没有这个标签,那么手动指定编码就变得尤为重要。

第四招:网络传输与数据库的编码“交接”

除了文件,数据在网络传输(HTTP请求/响应)和数据库存取时也可能发生编码问题。

HTTP响应编码:当从服务器获取HTML时,响应头中的Content-Type字段通常会指定编码(如text/html;charset=UTF-8)。在Java中,如果你使用HttpClient或HttpURLConnection,需要正确解析这些头部信息,并在读取响应体时指定相应的编码。

数据库编码:确保你的数据库、数据库表、数据库连接都使用一致的字符集(例如UTF-8)。在JDBC连接字符串中,也常常需要指定characterEncoding参数。

总结:编码的艺术,在于“知己知彼”

Javaparser和Htmlparser中的中文乱码问题,说到底是对字符编码理解不足的体现。掌握了编码的原理,理解了数据流动的过程,再结合上述的实战解决方案,你就能像庖丁解牛一样,游刃有余地处理各种编码相关的难题。

记住,最关键的原则是:数据的编码在产生时就应该确定,并在后续的处理过程中始终保持一致,或者在必要时进行正确、无损的转换。当你遇到乱码时,不要惊慌,仔细检查:

源文件的实际编码是什么?Java运行时的默认编码是什么?在文件读取、网络传输、数据库交互过程中,编码是如何被处理的?解析器(Javaparser/Htmlparser)是否被告知了正确的编码?

通过层层排查,你一定能找到乱码的“罪魁祸首”,并将其彻底“清除”。愿你我的开发之路,从此告别乱码,拥抱清晰!

图片来源:每经记者 吴志森 摄

用8秒讲清楚!官方推荐机机对机机无病毒风险免费的背后故事

封面图片来源:图片来源:每经记者 名称 摄

如需转载请与《每日经济新闻》报社联系。
未经《每日经济新闻》报社授权,严禁转载或镜像,违者必究。

读者热线:4008890008

特别提醒:如果我们使用了您的图片,请作者与本站联系索取稿酬。如您不希望作品出现在本站,可联系金年会要求撤下您的作品。

欢迎关注每日经济新闻APP

每经经济新闻官方APP

0

0

Sitemap